............::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................                                                    .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::----------------:::::........................................::::::--------:::::..........................................................................:::::----:::::.................................................................................................................................................................................................................................................................................................................................................................................................................................................:......................................:::---------------------------------------::::............::::::::::::::---=============---::::::::::::::::::::::::::::::...............................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************#################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************###################################################################################################################################################**********************************************************************************************************#################**************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################****************################*****************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++++++===========================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
............::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................                                                    ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------::::.......................................:::::::--------:::::..........................................................................:::::----:::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---------------------------------------::::............::::::::::::::---=============---::::::::::::::::::::::::::::::...............................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************#################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************####################################################################################################################################################**********************************************************************************************************#################**************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################*****************################*****************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++++++===========================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
...........:::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................                                                    ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------::::.....................................::::::::--------:::::...........................................................................:::::-----:::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------::::...........:::::::::::::::---=============---::::::::::::::::::::::::::::::...............................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************#####################################################################################################################################################**********************************************************************************************************#################**************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################*****************################******************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################################******************************+++++++++++++++++++++++++++++++++++++++++++++++++==========================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
...........::::::::::::::::::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................                                                    ...........................::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------::::...................................:::::::::---------:::::...........................................................................:::::-----:::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------::::...........:::::::::::::::---=============---:::::::::::::::::::::::::::::................................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************#####################################################################################################################################################**********************************************************************************************************#################**************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################****************#################*****************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################*******************************++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
..........:::::::::::::::::::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................                                                    ...........................:::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------::::...............................::::::::::----------::::::...........................................................................:::::-----::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------::::...........:::::::::::::::---=============--::::::::::::::::::::::::::::::................................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************#####################################################################################################################################################***********************************************************************************************************################***************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################****************#################***************************#**************************************************************************************************************************************************************************************##########################################################################################################################################################################################################################*********************************+++++++++++++++++++++++++++++++++++++++++++++++++==========================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
..........:::::::::::::::::::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................                                                    ...........................:::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------::::..............................:::::::::-----------::::::.............................................................................:::::-----::::::.......::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------::::...........::::::::::::::::---============--::::::::::::::::::::::::::::::................................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************#####################################################################################################################################################***********************************************************************************************************################***************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################****************#################**************************####************************************************************************************************************************************************************************************#########################################################################################################################################################################################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
..........:::::::::::::::::::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................                                                    ..........................::::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::-----------------:::::..........................::::::::::------------::::::..............................................................................:::::------::::::....:::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------::::...........::::::::::::::::---===========---::::::::::::::::::::::::.:::::................................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************####################################################################################################################################################************************************************************************************************************################***************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################***************#################*************************#####*************************************************************************************************************************************************************************************######################################################################################################################################################################################################################*************************************+++++++++++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
..........::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................                                                    ..........................:::::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------::::........................::::::::::--------------:::::...............................................................................:::::------:::::::.:::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------::::...........::::::::::::::::---===========---::::::::::::::::::::::::.:::::................................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************####################################################################################################################################################**************************************************************************************************************###############***************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################***************#################*************************######************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################**************************************+++++++++++++++++++++++++++++++++++++++++++++++++==========================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
.........:::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................                                                    ..........................:::::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------:::::.....................::::::::::---------------::::::................................................................................:::::-----::::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------------------------------------::::...........::::::::::::::::---===========---:::::::::::::::::::............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************######################################################################################################################################################***************************************************************************************************************#############*****************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################**************##################***********************########**********************************************************************************************************************************************************************************#####################################################################################################################################################################################################################*****************************************++++++++++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
::::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................                                                    ..........................:::::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------:::::...................::::::::::----------------::::::.................................................................................:::::------:::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------------------------------------::::...........::::::::::::::::---===========---:::::::::::::::::::............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************#######################################################################################################################################################****************************************************************************************************************############*****************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################**************##################***********************########**********************************************************************************************************************************************************************************####################################################################################################################################################################################################################******************************************+++++++++++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
::::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................                                                    ..........................:::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------::::..................::::::::::----------------::::::..................................................................................::::::-----:::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------------------------------------::::...........:::::::::::::::::---==========--::::::::::::::::::::............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++**************************************************************************************************************************#################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************######################################################################################################################################################******************************************************************************************************************############*****************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################***************#################***********************########**********************************************************************************************************************************************************************************##################################################################################################################################################################################################################*********************************************++++++++++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
:::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................                                                     ..........................::::::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------::::................:::::::::------------------::::::....................................................................................:::::------::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------------------------------------::::...........:::::::::::::::::---==========--::::::::::::::::::::............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++**************************************************************************************************************************##################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************######################################################################################################################################################*******************************************************************************************************************###########******************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################***************##################**********************########*********************************************************************************************************************************************************************************###################################################################################################################################################################################################################***********************************************+++++++++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
:::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................                                                     ..........................::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::------------------:::::..............::::::::--------------------:::::.....................................................................................::::::-----::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------------------------------------::::...........:::::::::::::::::---=========---:::::..::::::::::::.............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++**************************************************************************************************************************##################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************######################################################################################################################################################*********************************************************************************************************************##########*******************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################***************####################********************########*********************************************************************************************************************************************************************************################################################################################################################################################################################################################***************************************************++++++++++++++++++++++++++++++++++++++++++++++++========================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
---::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................                                                     ..........................::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------::::.............:::::::---------------------:::::.......................................................................................:::::------::::::::--:::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------------------------------------::::...........::::::::::::::::::--=========---:::::..::::::::::::.............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++**************************************************************************************************************************##################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************#######################################################################################################################################################**********************************************************************************************************************######***********************************************************************************************************************************************************************************************************************************************************************************************************************************************##*#############################################***************#######################*****************########********************************************************************************************************************************************************************************###############################################################################################################################################################################################################*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
--------:::::::::::::::::::::::....................................:::.....................................................................................................................................................................................................................................................................................................................................................................................                                                     ..........................::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------::::...........:::::::::--------------------::::::.......................................................................................::::::-------:::-:--::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------------------------------------::::..........:::::::::::::::::::--=========---:::::..::::::::::::.............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++*************************************************************************************************************************##################********+++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************######################################################################################################################################################*************************************************************************************************************************#####************************************************************************************************************************************************************************************************************************************************************************************************************************************************#*#############################################***************############################************########*******************************************************************************************************************************************************************************############################################################################################################################################################################################################***********************************************************++++++++++++++++++++++++++++++++++++++++++++++=========================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
------------:::::::::::::::::::.................................:::::::::..................................................................................................................................................................................................................................................................................................................................................................................                                                     ..........................::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::-----------------::::...........:::::::---------------------::::::.........................................................................................:::::--------------:::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::-------------------------------------::::..........:::::::::::::::::::--=========--::::::..::::::::::::.............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++*************************************************************************************************************************##################*********++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************######################################################################################################################################################*************************************************************************************************************************####***************************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################**************############################************########*******************************************************************************************************************************************************************************##########################################################################################################################################################################################################*************************************************************++++++++++++++++++++++++++++++++++++++++++++++=========================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
-----------------:::::::::::::::..............................::::::::::::::...............................................................................................................................................................................................................................................................................................................................................................................                                                    ...........................::::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------:::::........:::::::----------------------::::::..........................................................................................:::::-------------::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::-------------------------------------::::..........:::::::::::::::::::---========--::::::..::::::::::::::...........................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++**************************************************************************************************************************#################**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************###################################################################################################################################################***************************************************************************************************************************#**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################**************##############################**********#########*****************************************************************************************************************************************************************************######################################################################################################################################################################################################*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++========================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
---------==---------::::::::::::..........................::::::::::::::::::::.............................................................................................................................................................................................................................................................................................................................................................................                                                    ...........................::::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------:::::........::::::-----------------------:::::...........................................................................................:::::-------------::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::-------------------------------------::::..........:::::::::::::::::::---========--::::::..:::::::::::::............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++**************************************************************************************************************************#################**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************###################################################################################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################**************##############################**********#########*****************************************************************************************************************************************************************************####################################################################################################################################################################################################*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
----=============-----:::::::::::.......................::::::::::::::::::::::::...........................................................................................................................................................................................................................................................................................................................................................................                                                    ...........................::::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::-----------------:::::.....:::::::-----------------------::::::...........................................................................................:::::------------::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-------------------------------------::::..........:::::::::::::::::::---========--::::::..:.::::::::::.............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++**************************************************************************************************************************#################***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************##################################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################**************##############################**********#########*****************************************************************************************************************************************************************************################################################################################################################################################################################################**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
----================-----:::::::::..................::::::::::::::::::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................                                                    ...........................::::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------::::::...:::::::----------------------::::::.............................................................................................:::::-----------::::::............................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-------------------------------------::::..........::::::::::::::::::::--========--:::::...:.::::::::::.............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++**************************************************************************************************************************##################************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************###############################################################################################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################***************##############################*********#########****************************************************************************************************************************************************************************###########################################################################################################################################################################################*********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
----==================-----:::::::::::::...:::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................                                                    ...........................::::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::----------------:::::::::::::::----------------------:::::::.............................................................................................:::::----------:::::::............................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------------------------:::::..........::::::::::::::::::::--========--:::::...:.::::::::::.............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++**************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************##############################################################################################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################***************##############################*********#########****************************************************************************************************************************************************************************#######################################################################################################################################################################################*************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
----=========+++++======-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................................................................................................................................................................................................................................................                                                    ..........................:::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::---------------::::::::::::::----------------------::::::...............................................................................................:::::----------::::::..........................................................................................................................................................................................................................................................................................................................:..................................................................................................................................................:::::-----------------------------------:::::..........::::::::::::::::::::---=======--:::::...:.:::::::::..............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++**************************************************************************************************************************##################********************************************+++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************############################################################################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################**************##############################*********#########****************************************************************************************************************************************************************************##################################################################################################################################################################################*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++======================================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
-----======+++++++++======-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................................................................................................................................................................................................................................................                                                    ..........................:::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::---------------:::::::::::::--------------------:::::::::...............................................................................................:::::---------::::::.........................................................................................................................................................................................................................................................................................................................::::.................................................................................................................................................:::::-----------------------------------:::::..........::::::::::::::::::::---=======--:::::...:..::::::::..............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++**************************************************************************************************************************##################********************************************+++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************############################################################################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################**************##############################*********#########***************************************************************************************************************************************************************************############################################################################################################################################################################**************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
:----=====+++++++++++======-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................................................................................................................................................................................................................................................                                                    ..........................:::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::----------------:::::::::::------------------::::::::::.................................................................................................:::::---------:::::..........................................................................................................................................................................................................................................................................................................................::::............................................................................................................................::::.................:::::-----------------------------------:::::..........::::::::::::::::::::---=======--:::::...:..::::::::..............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++***************************************************************************************************************************#################*********************************************++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************###########################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################**************##############################*********#########***************************************************************************************************************************************************************************########################################################################################################################################################################******************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
::---=====+++++++++++++======--------:::::::::::--::::::------::::::::::::::::::::::::::::.................................................................................................................................................................................................................................................................................................................................................................                                                   ...........................:::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::---------------:::::::::::----------------:::::::::::.................................................................................................::::::--------::::::..........................................................................................................................................................................................................................................................................................................................::::...........................................................................................................................::::::.................::::----------------------------------::::::..........:::::::::::::::::::::--=======---::::....:...:::::..............................................................:::::::::::::::::::::....................................................................................................................................................................:::---==============++++++++++++++***************************************************************************************************************************#################*********************************************++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************#######################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################*************###############################********#########****************************************************************************************************************************************************************************###################################################################################################################################################################***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
:----=====++++++++++++++======----------------------------------::::::::::::::::::::::::::.................................................................................................................................................................................................................................................................................................................................................................                                                   ...........................:::::::........................................................................................................................................................................................:::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------------:::::::::::--------------::::::::::::.................................................................................................:::::::--------:::::..........................................................................................................................................................................................................................................................................................................................:::::..........................................................................................................................::::::::................::::----------------------------------::::::..........:::::::::::::::::::::--=======---:::::...:...:::::...............................................................::::::::::::::::::::....................................................................................................................................................................:::---==============++++++++++++++***************************************************************************************************************************#################*********************************************++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************######################################################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################*************###############################********#########***************************************************************************************************************************************************************************################################################################################################################################################################****************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
-----====++++++++++++++++=======---------------------------------:::::::::::::::::::::::::.................................................................................................................................................................................................................................................................................................................................................................                                                   ...........................:::::::.......................................................................................................................................................................................:::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::--------------::::::::::-------------:::::::::::....................................................................................................::::::--------:::::...........................................................................................................................................................................................................................................................................................................................:::::.........................................................................................................................::::::::::...............::::----------------------------------::::::..........:::::::::::::::::::::---======---:::::...:...:::::................................................................:::::::::::::::::::....................................................................................................................................................................:::---==============++++++++++++++***************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************#####################################################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################*************###############################********#########***************************************************************************************************************************************************************************###########################################################################################################################################################*********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
-----===++++++++++++++++++========---------------------------------:::::::::::::::::::::::.................................................................................................................................................................................................................................................................................................................................................................                                                   ...........................:::::::......................................................................................................................................................................................:::::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::--------------::::::::-------------:::::::::::.....................................................................................................:::::::------::::::............................................................................................................................................................................................................................................................................................................................::::........................................................................................................................:::::--::::...............::::----------------------------------::::::..........:::::::::::::::::::::---======---:::::........::..................................................................:::::::::::::::::::....................................................................................................................................................................:::---==============++++++++++++++***************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************#####################################################################################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################*************################################*******#########****************************************************************************************************************************************************************************###################################################################################################################################################****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
--======++++++*****++++++++==========-------------------------------::::::::::::::::::::::.................................................................................................................................................................................................................................................................................................................................................................                                                   ...........................:::::::.....................................................................................................................................................................................::::-----::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::---------------:::::::-----------:::::::::::......................................................................................................:::::::::::::::::::..............................................................................................................................................................................................................................................................................................................................::........................................................................................................................::::-----::::..............::::-----------------------------------:::::..........:::::::::::::::::::::---======---:::::............................................................................::::::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++**************************************************************************************************************************##################********************************************+++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************####################################################################################################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################*************################################*******##########***************************************************************************************************************************************************************************#############################################################################################################################################**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
======++++++********++++++++==============----------------------------::::::::::::::::::::.................................................................................................................................................................................................................................................................................................................................................................                                                  ............................:::::::....................................................................................................................................................................................:::--------:::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::--------------::::::::::------::::::::::::.......................................................................................................:::::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------::::..............::::-----------------------------------:::::.........:::::::::::::::::::::::--======---:::::..............................................................................::::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++**************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++++********************************************************************************##################################################################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################**************###############################*******##########****************************************************************************************************************************************************************************######################################################################################################################################*****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
===+++++++***********+++++++========================----------------------::::::::::::::::.................................................................................................................................................................................................................................................................................................................................................................                                                  ............................:::::::...................................................................................................................................................................................:::---====---:::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::------------::::::::::::-:::::::::::::::........................................................................................................:::::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------:::..............::::-----------------------------------:::::.........:::::::::::::::::::::::--======---:::::...............................................................................:::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++**************************************************************************************************************************##################*********************************************+++++++++++++++++++++++++++++++++++++++++++*******************************************************************************#################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################**************################################******##########*****************************************************************************************************************************************************************************##########################################################################################################################*****************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+++++++++************++++++++=================================---------------------::::::..................................................................................................................................................................................................................................................................................................................................................................                                                  ............................:::::::..................................................................................................................................................................................:::---======--:::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::------------::::::::::::::::::::::::::.........................................................................................................::::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------:::..............::::-----------------------------------:::::.........:::::::::::::::::::::::--======---:::::...............................................................................:::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++**************************************************************************************************************************##################*********************************************+++++++++++++++++++++++++++++++++++++++++++*******************************************************************************################################################################################################################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################**************################################******###########****************************************************************************************************************************************************************************#############################################################################################################******************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++++++++**************+++++++=======================================----------------:::::..................................................................................................................................................................................................................................................................................................................................................................                                                 .............................:::::::.................................................................................................................................................................................::::--========--::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::---------:::::::::::::::::::::::::::..........................................................................................................:::::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................::::----------:::..............::::---------------------------------:::::::........:::::::::::::::::::::::---=====---:::::...............................................................................:::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++***************************************************************************************************************************##################********************************************+++++++++++++++++++++++++++++++++++++++++++++****************************************************************************#################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################*************#################################****############*****************************************************************************************************************************************************************************#######################################################################################################***********************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+++++++**************++++++++===========================================------------:::::..................................................................................................................................................................................................................................................................................................................................................................                                                 .............................:::::::.................................................................................................................................................................................:::--=========--::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::------:::::::::::::::::::::::::::............................................................................................................:::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------:::..............::::---------------------------------:::::::........:::::::::::::::::::::::---=====---:::::...............................................................................:::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++***************************************************************************************************************************##################********************************************+++++++++++++++++++++++++++++++++++++++++++++****************************************************************************################################################################################################################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################*************##################################**##############*****************************************************************************************************************************************************************************#################################################################################################****************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++++++***************++++++++=============================================----------:::::..................................................................................................................................................................................................................................................................................................................................................................                                                ..............................:::::::................................................................................................................................................................................:::--====+++===--::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::..............................................................................................................:::::::::::::::::::....................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-------------::..............::::---------------------------------:::::::........:::::::::::::::::::::::---======--:::::..:.............................................................................::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++***************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************###############################################################################################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################*************##################################*###############******************************************************************************************************************************************************************************##########################*#############################################################************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+++++****************++++++++===============================================--------:::::.................................................................................................................................................................................................................................................................................................................................................................                                                 ..............................:::::::...............................................................................................................................................................................:::---===++++===--::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::................................................................................................................:::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--------------:::.............::::---------------------------------:::::::........::::::::::::::::::::::::--======--:::::..:.............................................................................::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++***************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++++****************************************************************************#############################################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################************##################################################********************************************************************************************************************************************************************************######################********####################################################*****************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+++++****************++++++++================================================-------:::::.................................................................................................................................................................................................................................................................................................................................................................                                                 ..............................::::::................................................................................................................................................................................:::--===+++++===--::............................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::..................................................................................................................:::::::....:::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----===------:::.............::::---------------------------------:::::::........::::::::::::::::::::::::--======--:::::..:..............................................................................:::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++***************************************************************************************************************************##################********************************************+++++++++++++++++++++++++++++++++++++++++++*****************************************************************************#############################################################################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################************##################################################**********************************************************************************************************************************************************************************###################**********###########################################*************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++++*****************++++++++================================================------:::::..................................................................................................................................................................................................................................................................................................................................................................                                                ...............................::::::...............................................................................................................................................................................:::--===++++++===--::............................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::.....................................................................................................................:::................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------===------:::.............::::---------------------------------:::::::........::::::::::::::::::::::::---=====--:::::..:..............................................................................:::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++***************************************************************************************************************************##################*********************************************++++++++++++++++++++++++++++++++++++++++++*****************************************************************************#########################################################################################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################************##################################################***********************************************************************************************************************************************************************************#################************###################################*********************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++++****************++++++++=================================================------:::::..................................................................................................................................................................................................................................................................................................................................................................                                                ...............................::::::..............................................................................................................................................................................::::--==+++++++===--::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----====-==----:::............::::---------------------------------:::::::........:::::::::..:::::::::::::---=====--:::::..:.::::::::.....................................................................:::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************#################*********************************************++++++++++++++++++++++++++++++++++++++++++****************************************************************************####################################################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################************##################################################************************************************************************************************************************************************************************************################**************###########################****************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+++*****************++++++++=================================================------:::::..................................................................................................................................................................................................................................................................................................................................................................                                                ...............................::::::..............................................................................................................................................................................:::--===+++++++===--::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::.........  ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------=======----:::............::::---------------------------------:::::::........:::::::::..:::::::::::::---=====--:::::::::::::::::.....................................................................:::::::::::::.....................................................................................................................................................................:::----============++++++++++++++++****************************************************************************************************************************#################*********************************************++++++++++++++++++++++++++++++++++++++++++****************************************************************************##################################################################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################************##################################################************************************************************************************************************************************************************************************################***************#####################*********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+++*****************++++++++=================================================------:::::..................................................................................................................................................................................................................................................................................................................................................................                                                ...............................:::::..............................................................................................................................................................................:::--===++++++++===--::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::..........     .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::------========----:::............::::---------------------------------:::::::........::::::::.........::::::::--=====--::::::::.::::::::...................:::::::::::::::::..................................::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************#################*********************************************++++++++++++++++++++++++++++++++++++++++++***************************************************************************######################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################*************#################################################*************************************************************************************************************************************************************************************###############******************#############***************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
+++*****************++++++++=================================================------:::::..................................................................................................................................................................................................................................................................................................................................................................                                               ................................:::::..............................................................................................................................................................................:::--===++++++++==--:::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::...........      .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::-----==========---:::............:::::--------------------------------:::::::........:::::::..........::::::::--=====--::::::::::::::::::::...............:::::::::::::::::::::...............................::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************#################*********************************************++++++++++++++++++++++++++++++++++++++++++***************************************************************************####################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################*************#################################################*************************************************************************************************************************************************************************************##############***********************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
++*****************+++++++++=================================================------:::::..................................................................................................................................................................................................................................................................................................................................................................                                               .................................::::.............................................................................................................................................................................:::--===+++++++++==--:::............................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::...........         ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::------==========----::.............::::-------------------------------::::::::........:::::::..........::::::::--=====--:::::::::::::::::::::.............:::::::::::::::::::::::..............................::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++***************************************************************************##################################################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################*************#################################################**************************************************************************************************************************************************************************************#############************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
++*****************++++++++==================================================------:::::..................................................................................................................................................................................................................................................................................................................................................................                                              ..................................::::............................................................................................................................................................................:::--===++++++++++==--:::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::::::...........          .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::-----============---:::............::::-------------------------------::::::::........:::::::...........:::::::--=====--::::::::::::::::::::::...........:::::::::::::::::::::::::.............................::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++**************************************************************************##################################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################*************#################################################**************************************************************************************************************************************************************************************############**************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
+******************++++++++==================================================------::::.............................................................................................................................................................:::::::.....................................................::::::::..................................................................................................................................                                              ..................................::::............................................................................................................................................................................:::--===++++++++++==--:::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::::...........           .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----============---:::............::::-------------------------------::::::::........::::::............:::::::---====--:::::::::::::::::::::::.........:::::::::::::::::::::::::::............................::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++**************************************************************************################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################************#################################################****************************************************************************************************************************************************************************************########****************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
*******************++++++++=================================================------:::::............................................................................................................................................................::::::::::.................................................::::::::::::................................................................................................................................                                             ...................................:::............................................................................................................................................................................:::--===+++++++++++==--:::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::::...........            .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::-----=============---:::............::::-------------------------------::::::::........::::::.............::::::---====--:::::::::::::::::::::::........::::::::::::::::::::::::::::::..........................::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++**************************************************************************################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####****#**********************************************************************************************************************************************************************************########################################************#################################################******************************************************************************************************************************************************************************************####*******************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
******************++++++++==================================================------:::::..........................................................................................................................................................:::::::::::::...............................................::::::::::::::...............................................................................................................................                                            .....................................::.............................................................................................................................:::::::........................................:::--==++++++++++++==--::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::.....::::::...........            .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::----==============---:::............::::-------------------------------::::::::........:::::..............::::::---====--::::::::::::::::::::::::.......:::::::::-------:::::::::::::::..........................:::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++**************************************************************************##############################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################******************************************************************************************************************************************************************************#######################################************#################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
******************++++++++==================================================------:::::.........................................................................................................................................................:::::::::::::::.............................................:::::::::::::::...............................................................................................................................                                            ..................................................................................................................................................................:::::::::::::...................................:::--===++++++++++++==--::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::.........::::..........            ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::----===============--:::............::::-------------------------------::::::::........:::::...............::::::--====--::::::::::::::::::::::::.......:::::::-------------::::::::::::.........................:::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++**************************************************************************#############################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#########################*****************************************************************************************************************************************************************************#######################################************#################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
******************++++++++==================================================------:::::.........................................................................................................................................................::::::::::::::::...........................................:::::::::::::::::..............................................................................................................................                                            .................................................................................................................................................................::::::::::::::::................................:::--===++++++++++++===--::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::......................            ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::-----===============--:::............::::------------------------------:::::::::........::::::...............:::::--====--::::::::::::::::::::::::.......::::::----------------::::::::::..........................::::::::::.....................................................................................................................................................................:::----=============++++++++++++++++***************************************************************************************************************************##################*******************************************+++++++++++++++++++++++++++++++++++++++++++**************************************************************************############################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###########################*****************************************************************************************************************************************************************************######################################*************################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
******************++++++++=================================================-------:::::........................................................................................................................................................::::::::::::::::::.........................................::::::::::::::::::..............................................................................................................................                                           ..................................................................................................................................................................:::::------:::::::..............................:::--===++++++++++++===--::......................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::.......................           .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::-----===============--:::............::::------------------------------:::::::::.......:::::::...............:::::---===--::::::::::::::::::::::::.......::::::-----------------::::::::::.........................::::::::::.....................................................................................................................................................................:::----=============++++++++++++++++***************************************************************************************************************************##################*******************************************+++++++++++++++++++++++++++++++++++++++++++**************************************************************************###########################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################****************************************************************************************************************************************************************************######################################*************################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
******************++++++++=================================================-------:::::.......................................................................................................................................................::::::::::::::::::::.......................................::::::::::::::::::::.............................................................................................................................                                           ..................................................................................................................................................................:::-----------::::::...........................:::--===+++++++++++++===-:::..................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::.......................          ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::----================--:::...........::::--------------========----------::::::::.......:::::::...............:::::---===--::::::..:::::::::::::::........:::::-------------------:::::::::::........................:::::::::.....................................................................................................................................................................:::----=============++++++++++++++++***************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++***************************************************************************#########################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################***************************************************************************************************************************************************************************######################################*************################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
******************++++++++==================================================------::::.......................................................................................................................................................:::::::::::::::::::::................................::::::::::::::::::::::::::::............................................................................................................................                                           .................................................................................................................................................................::::----==-------::::::.........................:::--===+++++++++++++==--:::................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::........................        ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::----================--:::...........::::-------------==========----------:::::::.......::::::::..............::::::---=---:::::......::::::::::::........:::::---------------------:::::::::::.......................::::::::.....................................................................................................................................................................:::----=============++++++++++++++++***************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++****************************************************************************#######################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************################################**************************************************************************************************************************************************************************#######################################**************###############################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
******************++++++++==================================================------::::......................................................................................................................................................::::::::::::::::::::::::............................::::::::::::::::::::::::::::::...........................................................................................................................                                            .................................................................................................................................................................::::---=======------:::::.......................::--===++++++++++++++==--:::..............................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::......  ................       .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::........................................................................................................::::----================---::...........::::-----------=============---------:::::::......:::::::::...............:::::-------::::..........::::::::........::::::----------------------:::::::::::::....................::::::::......................................................................................................................................................................::----=============++++++++++++++++****************************************************************************************************************************#################********************************************+++++++++++++++++++++++++++++++++++++++++******************************************************************************#####################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************################################***************************************************************************************************************************************************************************######################################***************##############################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
*****************++++++++===================================================------::::...................................................................................................................................................::::::::::::::::::::::::::::.........................::::::::::::::::::::::::::::::::...........................................................................................................................                                            .................................................................................................................................................................:::---==========-----:::::::...................:::--===++++++++++++++==--:::.............................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::......   ................      .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::.......................................................................................................:::----=================---::...........:::----------===============--------::::::::......:::::::::...............:::::-------::::..........................::::::------------------------::::::::::::....................::::::.......................................................................................................................................................................:::---==============+++++++++++++++****************************************************************************************************************************##################*******************************************+++++++++++++++++++++++++++++++++++++++++******************************************************************************###################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################**************************************************************************************************************************************************************************######################################**************###############################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
*****************++++++++====================================================------:::................................................................................................................................................::::::::::::-------::::::::::::::::....................:::::::::::::::::::::::::::::::::...........................................................................................................................                                           ..................................................................................................................................................................:::---=============-----::::::.................::--===++++++++++++++===--:::............................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::.......    ...............     .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::......................................................................................................:::----=================---:::..........:::--------=================--------::::::::......::::::::::...............::::-------::::..........................::::::-------------------------::::::::::::::::...............::::::.......................................................................................................................................................................:::---==============+++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++++********************************************************************************#################################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################***************************************************************************************************************************************************************************#####################################**************###############################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
*****************++++++++====================================================------:::..............................................................................................................................................::::::::::-----------------::::::::::::::..............::::::::::::::::::::::::::::::::::::..........................................................................................................................                                           ..................................................................................................................................................................:::---==============------::::::..............:::--===++++++++++++++===--::............................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::......     ................  .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::......................................................................................................:::----==================--:::..........::-------===================-------:::::::::......::::::::::................:::-------::::..........................::::::--------------------------::::::::::::::::..............::::::.......................................................................................................................................................................:::---==============+++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++++********************************************************************************#################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################****************************************************************************************************************************************************************************####################################*************#################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
*****************++++++++=====================================================-----:::............................................................................................................................................::::::::::----------------------::::::::::::::::::......:::::::::::::::::::::::::::::::::::::..........................................................................................................................                                           ..................................................................................................................................................................::::--=================-----:::::.............::---==+++++++++++++++===-:::...........................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::......      .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::......................................................................................................:::----==================--:::..........::-----===========++========-------::::::::::.....::::::::::................::::------::::...........................:::::---------------------------::::::::::::::::..........:::::::::.......................................................................................................................................................................:::---==============+++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++++*********************************************************************************##############################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################****************************************************************************************************************************************************************************####################################**************################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
****************++++++++=======================================================-----::............................................................................................................................................:::::::----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................................................                                          ....................................................................................................................................................................:::--===================-----::::...........:::--===+++++++++++++++==--:::.........................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::---:::::......       .......:.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::.....................................................................................................:::----==================--:::.........:::---============++++++=====-------::::::::::.....::::::::::................::::------::::...........................::::::--------------------------:::::::::::::::::::.......:::::::::.......................................................................................................................................................................:::---==============+++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++++**********************************************************************************###########################################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################****************************************************************************************************************************************************************************####################################**************################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+***************++++++++========================================================----::...........................................................................................................................................:::::------------------------------------::::::::::::::::::::::------::::::::::::::::::::::::::.........................................................................................................................                                          ....................................................................................................................................................................:::--=====================----::::..........:::--==++++++++++++++++==--:::........................................................................................................................................................................................................................................................................................................................................................................................................................................::::::-----::::......        .......::................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::.....................................................................................................:::---===================--:::........:::---===========+++++++=====--------::::::::::.....::::::::::................::::------:::::..........................::::::-------------------------:::::::::::::::::::::::::..:::::::::.......................................................................................................................................................................:::---==============+++++++++++++++****************************************************************************************************************************###################******************************************++++++++++++++++++++++++++++++++++++++++************************************************************************************########################################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################****************************************************************************************************************************************************************************####################################**************################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+***************++++++++=========================================================---:::.........................................................................................................................................:::::-----------------------------------------:::::::::::::::::-------------::::::::::::::::::::.........................................................................................................................                                          ....................................................................................................................................................................::::--======================----:::........:::--===++++++++++++++++==--:::.......................................................................................................................................................................................................................................................................................................................................................................................................................................::::::------::::......        .......:::...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::....................................................................................................::::---===================--:::.......:::---==========++++++++======-------:::::::::::.....::::::::::................::::------:::::..........................::::::------------------------::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==============+++++++++++++++****************************************************************************************************************************###################******************************************+++++++++++++++++++++++++++++++++++++++*************************************************************************************#######################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################*****************************************************************************************************************************************************************************###################################**************################################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++**************+++++++==========================================================---:::.........................................................................................................................................::::------------------------------------------------::::::::--------------------::::::::::::::::.........................................................................................................................                                         ......................................................................................................................................................................:::--=============+++=======----:::.......:::--===+++++++++++++++===--::...................:...................................................................................................................................................................................................................................................................................................................................................................................................................::::::------::::......         ......:::::...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::.....................................................................................................:::----===================--:::......:::---========+++++++++++=====-------::::::::::::.....::::::::::...............:::::------:::::..........................::::::-----------------------:::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==============+++++++++++++++*****************************************************************************************************************************##################******************************************+++++++++++++++++++++++++++++++++++++++****************************************************************************************###################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################******************************************************************************************************************************************************************************###################################*************################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++*************++++++++==========================================================---:::........................................................................................................................................:::::---------------------------------------------------------------------------------::::::::::::........................................................................................................................                                        .......................................................................................................................................................................:::---==========++++++++=====---:::......::::--==++++++++++++++++==--:::..................:::..................................................................................................................................................................................................................................................................................................................................................................................................................:::::-------:::......          ......::::::..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::.....................................................................................................:::----===================--::::...::::---========++++++++++++=====-------::::::::::::.....::::::::::..........::::::::::------::::::.........................:::::::----------------------:::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==============+++++++++++++++*****************************************************************************************************************************##################******************************************++++++++++++++++++++++++++++++++++++++*******************************************************************************************#############################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################******************************************************************************************************************************************************************************###################################*************################################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++*************++++++++==========================================================---:::........................................................................................................................................::::---------------------------------------------------------------------------------------::::::::......................................................................................................................                                        ........................................................................................................................................................................::::--=========++++++++++=====---::::....:::--===++++++++++++++++==--:::.................:::::...............................................................................................................................::...............................................................................................................................................................................................................................................................................:::::-------:::......           ......::::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::......................................................................................................:::----===================---:::::::::----======+++++++++++++=====--------::::::::::::.....::::::::::........::::::::::::------:::::::::::.....................::::::---------------------::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==============+++++++++++++++*****************************************************************************************************************************##################******************************************++++++++++++++++++++++++++++++++++++++********************************************************************************************############################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################******************************************************************************************************************************************************************************##################################*************################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++*************++++++++==========================================================---:::........................................................................................................................................::::------------------------------------------------------------------------------------------::::::.....................................................................................................................                                        .........................................................................................................................................................................:::---========++++++++++++====---::::..::::--===+++++++++++++++===--:::.................:::::.............................................................................................................................:::::..............................................................................................................................................................................................................................................................................:::::------::::......           .....::::::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::.......................................................................................................:::---====================---::::::::---=======++++++++++++++=====-------:::::::::::::.....::::::::::.......:::::::::::::------:::::::::::::....................:::::---------------------::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==============+++++++++++++++*****************************************************************************************************************************##################******************************************++++++++++++++++++++++++++++++++++++++***********************************************************************************************########################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################******************************************************************************************************************************************************************************##################################*************################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++*************++++++++==========================================================---:::.......................................................................................................................................:::::-------------------------------------------------------------------------------------------::::::::..................................................................................................................                                        ..........................................................................................................................................................................:::--=========++++++++++++====--:::::.::::--==++++++++++++++++==--:::..................:::::............................................................................................................................:::::::.............................................................................................................................................................................................................................................................................:::::-----::::......            .....:::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---====================---::::::----======++++++++++++++++=====-------:::::::::::::.....::::::::::.......::::::::::::::------:::::::::::::::.................::::::---------------------:::::::::::::::::::::::::::::::::::..........................................................................................................................................................................:::---==============+++++++++++++++*****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++***************************************************************************************************####################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################*******************************************************************************************************************************************************************************#################################************##################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++************++++++++===========================================================---:::.......................................................................................................................................:::::---------------------------------------------------------------------------------------------::::::::................................................................................................................                                        ..........................................................................................................................................................................:::---========++++++++++++=====--:::::::::--==+++++++++++++++===--:::.................::::::............................................................................................................................::::::::............................................................................................................................................................................................................................................................................:::::::-:::::......             ....::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---====================------------======++++++++++++++++======-------:::::::::::::.....::::::::::......:::::::::::::::--------:::::::::::::::::.............::::::---------------------:::::::::::::::::::::::::::::::::::..........................................................................................................................................................................:::---==============+++++++++++++++*****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++*****************************************************************************************************#################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################*******************************************************************************************************************************************************************************#################################************##################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++************++++++++==========================================================----::........................................................................................................................................:::::------------------------------------------------------------------------------------------------:::::::..............................................................................................................                                        ...........................................................................................................................................................................:::---=========+++++++++++====---:::::::---==+++++++++++++++==--:::..................::::::...........................................................................................................................:::::::::............................................................................................................................................................................................................................................................................::::::::::::......             .....:::-----::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---=====================---------=======+++++++++++++++++=====-------::::::::::::::.....:::::::::.......:::::::::::::::---------::::::::::::::::::...........::::::-----------------------::::::::::::::::::::::::::::::.............................................................................................................................................................................:::---==============++++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++********************************************************************************************************###########################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################******************************************************************************************************************************************************************************#################################*************#################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++***********++++++++===========================================================---:::........................................................................................................................................:::::---------------------------------------------------------------------------------------------------:::::.............................................................................................................                                        ...........................................................................................................................................................................::::--=========++++++++++++====---::::::--===++++++++++++++===--:::..................::::::...........................................................................................................................:::::::::.............................................................................................................................................................................................................................................................................::::::::::......              ....:::------::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---======================------=======++++++++++++++++++=====--------:::::::::::::::.....::::::::......:::::::::::::::::-----------::::::::::::::::::........::::::------------------------::::::::::::::::::::::::::::..............................................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++*********************************************************************************************************#########################***********************************************************************************************+++++++*****************************************************************************************************************************************************************************************************************************************************************************************##################################*******************************************************************************************************************************************************************************################################*************#################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+**********+++++++++===========================================================----:::........................................................................................................................................:::::-----------------------------------------------------------------------------------------------------:::::...........................................................................................................                                       .............................................................................................................................................................................:::---========+++++++++++++===----::::---==+++++++++++++++===--::...................::::::..........................................................................................................................::::::::::..............................................................................................................................................................................................................................................................................::::::::......               ....:::-------:::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---==================================++++++++++++++++++======--------:::::::::::::::.....:::::::.......:::::::::::::::::---------------::::::::::::::::.....:::::::--------------------------:::::::::::::::::::::::::...............................................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++*********************************************************************************************************###################*####*******************************************************++++++++++++++*************************+++++++++++++*************************************************************++++*****************##########*****************************************************************************************************************************************************************************************##################################*******************************************************************************************************************************************************************************################################*************#################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
*********++++++++++============================================================----:::........................................................................................................................................::::-------------------------------------------------------------------------------------------------------:::::..........................................................................................................                                      ..............................................................................................................................................................................::::--========+++++++++++++====-----:----==+++++++++++++++==--:::..................:::::::..........................................................................................................................::::::::::............................................................................................................................................................................................................................................................................................              ....::::-------::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---================================++++++++++++++++++++=====--------::::::::::::::::....::::::::.......::::::::::::::::::-----------------:::::::::::::::::::::::::----------------------------::::::::::::::::::::::.......:........................................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++********************************************************************************************************#################******************************************++++++++++*****+++++++++++++++++++++++********************++++++++++++++++++********************************************************+++++++++++**********##############****************************************************************************************************************************************************************************************#################################*******************************************************************************************************************************************************************************#################################************#################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
*****+++++++++++++============================================================-----:::........................................................................................................................................::::--------------------------------------------------------------------------------------------------------::::..........................................................................................................                                      ...............................................................................................................................................................................::::--===========++++++++++====--------===++++++++++++++===--::...................:::::::.........................................................................................................................:::::::::::............................................................................................................................................................................................................................................................................................             .....::::-------::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::----==============================+++++++++++++++++++++=====---------::::::::::::::::.::::::::::........::::::::::::::::::--------------------::::::::::::::::::::::-------------------------------:::::::::::::::::::...:::::........................................................................................................................................................................:::----==============+++++++++++++++****************************************************************************************************************************###################******************************************++++++++++++++++++++++++++++++++++++++*****************************************************************************************************#################******************************************+++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++**********************+++++**********************++++++++++++*********##################**************************************************************************************************************************************************************************************#################################********************************************************************************************************************************************************************************################################************#################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+****+++++++++++========------================================================----:::.........................................................................................................................................::::---------------------------------------------------------------------------------------------------------::::.........................................................................................................                                      ................................................................................................................................................................................:::---==========+++++++++++====------===+++++++++++++++==--:::...................:::::::.........................................................................................................................:::::::::::............................................................................................................................................................................................................................................................................................            ......::::-------::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::----============================+++++++++++++++++++++++=====--------::::::::::::::::::::::::::::........::::::::::::::::::----------------------:::::::::::::::::::-----------------------------------::::::::::::::::..::::::........................................................................................................................................................................:::----==============+++++++++++++++****************************************************************************************************************************###################******************************************++++++++++++++++++++++++++++++++++++++****************************************************************************************************#################****************************************+++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++*****************++++++++********************++++++++++++********#####################************************************************************************************************************************************************************************************##################################*******************************************************************************************************************************************************************************################################************#################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
***++++++++++++=======--------------==========================================----:::.........................................................................................................................................::::----------------------------------------------------------------------------------------------------------::::........................................................................................................                                      ................................................................................................................................................................................::::--=========++++++++++++=============++++++++++++++===--:::...................:::::::.........................................................................................................................:::::::::::..............................................................................................................................................................................................................................................................................................       .........::::-------:::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::----====================+==+++++++++++++++++++++++++++=====----------::::::::::::::::::::::::::.........:::::::::::::::::::------------------------::::::::::::::::-------------------------------------::::::::::::::::::::::::::::..................................................................................................................................................................::::---==============+++++++++++++++*****************************************************************************************************************************##################******************************************++++++++++++++++++++++++++++++++++++++++******************************************************************************************#**#################*********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++*******+++++++++++++++******************++++++++++++++*******#######################***********************************************************************************************************************************************************************************#################################********************************************************************************************************************************************************************************################################************#################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
***+++++++++++=======-------------------=====================================-----:::.........................................................................................................................................::::-----------------------------------------------------------------------------------------------------------:::........................................................................................................                                      .................................................................................................................................................................................:::---===========++++++++++===========+++++++++++++++===--::....................:::::::........................................................................................................................::::::::::::...............................................................................................................................................................................................................................................................................................     ...........:::-------:::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::----=================+++++++++++++++++++++++++++++++++=====----------::::::::::::::::::::::::::.........:::::::::::::::::::--------------------------:::::::::::::----------------------------------------:::::::::::::::::::::::::::.................................................................................................................................................................::::---==============+++++++++++++++*****************************************************************************************************************************##################******************************************++++++++++++++++++++++++++++++++++++++++*****************************************************************************************####################********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++******#########################**********************************************************************************************************************************************************************************#################################********************************************************************************************************************************************************************************################################************#################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
****+++++++++=======-------------------------================================-----:::.........................................................................................................................................::::-----------------------------------------------------------------------------------------------------------::::.......................................................................................................                                     ...................................................................................................................................................................................:::---==========++++++++++++========++++++++++++++++==--:::...................::::::::........................................................................................................................::::::::::::...............................................................................................................................................................................................................................................................................................................::::-----::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---================+++++++++++++++++++++++++++++++++=====-----------::::::::::::::::::::::::.:.........:::::::::::::::::::------------------------------:::::::--------------------------------------------:::::::::::::::::::::::::.................................................................................................................................................................::::---==============+++++++++++++++****************************************************************************************************************************###################******************************************++++++++++++++++++++++++++++++++++++++++*****************************+++++**********************************************#########################***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++*******###########################*********************************************************************************************************************************************************************************##################################*******************************************************************************************************************************************************************************################################*************################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
****+++++++++======------::::--------------------===========================-----::::.........................................................................................................................................::::------------------------------------------------------------------------------------------------------------:::.......................................................................................................                                     ...................................................................................................................................................................................::::---=========+++++++++++++======++++++++++++++++===--:::...................::::::::........................................................................................................................::::::::::::................................................................................................................................................................................................................................................................................................................::::----::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---==============++++++++++++++++++++++++++++++++++======----------::::::::::::::::::::::::............:::::::::::::::::::-----------------------------------------------------------------------------------:::::::::::::::::::::::.................................................................................................................................................................::::---==============+++++++++++++++****************************************************************************************************************************###################******************************************+++++++++++++++++++++++++++++++++++++++++***************************+++++++****************************************############################************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++********############################*********************************************************************************************************************************************************************************#################################********************************************************************************************************************************************************************************################################*************################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
****+++++++++======-----:::::------------------------=======================-----::::.........................................................................................................................................::::------------------------------------------------------------------------------------------------------------::::.....................................................................................................                                      ....................................................................................................................................................................................:::----==========++++++++++++++=++++++++++++++++++==---::::..................::::::::........................................................................................................................::::::::::::................................................................................................................................................................................................................................................................................................................::::::-:::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---=============+++++++++++++++++++++++++++++++++++=====-----------::::::::::::::::::::::::............:::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::::::::................................................................................................................................................................:::---==============++++++++++++++++***************************************************************************************************************************###################******************************************+++++++++++++++++++++++++++++++++++++++++**********************************************************************############################***************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************##############################********************************************************************************************************************************************************************************#################################********************************************************************************************************************************************************************************#################################*************###############################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
****++++++++=======-----::::::---------------------------------------------------::::.........................................................................................................................................::::-------------------------------------------------------------------------------------------------------------:::.....................................................................................................                                     ......................................................................................................................................................................................:::----==========+++++++++++++++++++++++++++++++===---:::::................:::::::::........................................................................................................................::::::::::::.................................................................................................................................................................................................................................................................................................................:::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---============+++++++++++++++++++++++++++++++++++=====-----------::::::::::::::::::::::::............::::::::::::::::::::----------------------------------------------------------------------------------------::::::::::::::::::::................................................................................................................................................................:::---==============++++++++++++++++****************************************************************************************************************************##################******************************************++++++++++++++++++++++++++++++++++++++++++***************************++*********************************################################*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************################################********************************************************************************************************************************************************************************################################*****************************************************************************************************************************************************************#**************#################################*************###############################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
****++++++++=======-----::::::---------------------------------------------------:::.........................................................................................................................................:::::-------------------------------------------------------------------------------------------------------------:::.....................................................................................................                                     .......................................................................................................................................................................................:::----==========++++++++++++++++++++++++++++++===--::::::::..............:::::::::.......................................................................................................................:::::::::::::.................................................................................................................................................................................................................................................................................................................::::::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---===========+++++++++++++++++++++++++++++++++++======-----------::::::::::::::::::::::::............::::::::::::::::::::-------------------------------------------------------------------------------------------::::::::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*****************************************++++++++++++++++++++++++++++++++++++++++++++*******************************************************###################################*********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+*+++++++++++++++++++++++++++++++++++++++++++++++*************************************#################################********************************************************************************************************************************************************************************################################*****************************************************************************************************************************************************************#**************#################################**************##############################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
***+++++++++======------::::::--------------------------------------------------::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::.....................................................................................................                                    ........................................................................................................................................................................................::::----=========+++++++++++++++++++++++++++++===---:::::::::::::........::::::::::.......................................................................................................................:::::::::::::..................................................................................................................................................................................................................................................................................................................::::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---=========+++++++++++++++++++++++++++++++++++======-------------:::::::::::::::::::::::...:........::::::::::::::::::::---------------------------------------------------------------------------------------------::::::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*****************************************++++++++++++++++++++++++++++++++++++++++++++**************************************************#####################################*************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++**************************************####################################***********************************************######**************************************************************************************************************************################################*****************************************************************************************************************************************************************#**************#################################**************##############################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
***+++++++++======------::::::----------------------------::::::::::::---------:::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::.....................................................................................................                                    .........................................................................................................................................................................................::::----==========+++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::........................................................................................................................::::::::::::....................................................................................................................................................................................................................................................................................................................:::::..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---=========++++++++++++++++++++++++++++++++++======-------------:::::::::::::::::::::::::...........::::::::::::::::::::----------------------------------------------------------------------------------------------:::::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*****************************************++++++++++++++++++++++++++++++++++++++++++*********************************************#########################################********************************************************************************+++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++**************#####################****#########################################****************############****************###########**********************************************************************************************************************################################********************************************************************************************************************************************************************************##################################********************########################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
***++++++++=======------::::::--------------------------:::::::::::::::::-----::::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::.....................................................................................................                                    ..........................................................................................................................................................................................::::----==========+++++++++++++++++++++++++===---::::::::::::::::::::::::::::::::::......................................................................................................................::::::::::::.....................................................................................................................................................................................................................................................................................................................:.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---========++++++++++++++++++++++++++++++++++======--------------:::::::::::::::::::::::::...........::::::::::::::::::::----------------------------------------------------------------------------------------------:::::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*****************************************++++++++++++++++++++++++++++++++++++++++++*****************************************#########################################********************************************************************************************************************************************************++++++++++++++++++++***************#########################################################################*#########################***************############**********************************************************************************************************************###############################********************************************************************************************************************************************************************************##################################*********************#######################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
***++++++++=======------::::::------------------------:::::::::.::::::::::::::::::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::.....................................................................................................                                    ...........................................................................................................................................................................................:::::---==========++++++++++++++++++++++++===---::::::::::::::::::::::::::::::::::::....................................................................................................................::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::---========+++++++++++++++++++++++++++++++++======---------------::::::::::::::::::::::::::.........:::::::::::::::::::::----------------------------------------------------------------------------------------------:::::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*****************************************+++++++++++++++++++++++++++++++++++++****************************************##########################################*****************************************************************************************************************************************************************++++++++++++**************########################################################################################################***************#############*********************************************************************************************************************##############################*********************************************************************************************************************************************************************************##################################*********************######################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++=================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
***++++++++=======------::::::-----------------::::--::::::::........:::::::::::::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::.....................................................................................................                                    ............................................................................................................................................................................................:::::----=========++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::..............................................................................................................::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--======+++++++++++++++++++++++++++++++++========---------------::::::::::::::::::::::::::.........:::::::::::::::::::::-----------------------------------------------------------------------------------------------:::::::::::::::..............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*****************************************+++++++++++++++++++++++++++++++****************************************############################################*****************************************************************************************************************************#####################******************************************###########################################################################################################***************###############*******************************************************************************************************************##############################*********************************************************************************************************************************************************************************##################################**********************#####################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
***++++++++======-------::::::-----------------:::::::::::::..........::::::::::::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::.....................................................................................................                                   ...............................................................................................................................................................................................::::-----========+++++++++++++++++++++===---::::::..........:::::::::::::::::::::::::::::::::.........................................................................................................:::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--======+++++++++++++++++++++++++++++++=========----------------::::::::::::::::::::::::::........::::::::::::::::::::::-----------------------------------------------------------------------------------------------:::::::::::::::..............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################******************************************+++++++++++++++++++*************************************######################################################***************************************************#######################################################################################################*********************************#################################################################################################################**************################*******************************************************************************************************************#############################*********************************************************************************************************************************************************************************##################################**********************#####################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++=================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
***+++++++=======--------::::-----------------::::::::::::::...........:::::::::::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::.....................................................................................................                                   ................................................................................................................................................................................................:::::----========++++++++++++++++++++===---::::::.............::::::::::::::::::::::::::::::::::::....................................................................................................:::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--=======++++++++++++++++++++++++++++==========-----------------:::::::::::::::::::::::::::......:::::::::::::::::::::::----------------------------------------------------------------------------------------------::::::::::::::::..............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************###################*****************************************************************************************##########################################################**********************************************#####################################################################################################################***********************######################################################################################################################**************#################******************************************************************************************************************#############################*********************************************************************************************************************************************************************************##################################************************##################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++==================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
**++++++++=======--------:::-----------------:::-:::::::::::...........:::::::::::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::....................................................................................................                                    ..................................................................................................................................................................................................::::-----========++++++++++++++++++===----:::::::..............::::::::::::::::::::::::::::::::::::::::.............................................................................................:::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--========+++++++++++++++++++++++++===========-----------------::::::::::::::::::::::::::::.:...::::::::::::::::::::::::----------------------------------------------------------------------------------------------::::::::::::::::..............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************###################**********************************************************************************#############################################################*********************************************########################################################################################################################################################################################################################################################################**************#################*****************************************************************************************************************#############################*********************************************************************************************************************************************************************************##################################************************################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++==================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
**++++++++======----------------------------::::-::::::::::.............::::::::::::.........................................................................................................................................:::---------------------------------------------------------------------------------------------------------------:::....................................................................................................                                   ....................................................................................................................................................................................................:::::-----=======+++++++++++++++++===------:::::..............::::::::::::::::::::::::::::::::::::::::::::::........................................................................................::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--========+++++++++++++++++++++++===========-------------------:::::::::::::::::::::::::::::::..::::::::--::::::::::::::----------------------------------------------------------------------------------------------::::::::::::::::..............................................................................................................................................................::::---==============+++++++++++++++****************************************************************************************************************************###################*************************************************************************##################################################################***********************************######################################################################################################################################################################################################################################################################################**************#################*****************************************************************************************************************#############################*********************************************************************************************************************************************************************************##################################************************################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++==================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
**++++++++======--------------------------------::::::::::::...........:::::::::::::.........................................................................................................................................:::---------------------------------------------------------------------------------------------------------------:::....................................................................................................                                   ......................................................................................................................................................................................................:::::-----======++++++++++++++++====------:::::..............:::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--=========++++++++++++++++++++===========----------------------:::::::::::::::::::::::::::::::..::::::----::::::::::::-----------------------------------------------------------------------------------------------::::::::::::::::..............................................................................................................................................................::::---==============++++++++++++++++***************************************************************************************************************************####################***********************************************************############################################################################**************************##################################################################################################################################################################################################################################################################################################**************###################****************************************************************************************************************#############################******************************************************************************************************************************************************************####**********##################################************#***********########********######**#########******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++==================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
**++++++++======--------------------------------::::::::::::...........:::::::::::::.........................................................................................................................................:::--------------------------------------------------------------------------------------------------------------::::....................................................................................................                                   ........................................................................................................................................................................................................:::::----=======+++++++++++++++======-----:::::............::::::::::::.:::::::::::::::::::::::::::::::::::::::::...............................................................................::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::---=========+++++++++++++++++==========--------------------------:::::::::::::::::::::::::::::::::::::::----::::::::::::-----------------------------------------------------------------------------------------------::::::::::::::::..............................................................................................................................................................::::---==============++++++++++++++++***************************************************************************************************************************#####################**********************************************####################################################################################***********************#########################################################################################################################################################################################################################################################################################################**************#####################**************************************************************************************************************#############################******************************************************************************************************************************************************************####**********###################################***********#*************###***********#############***#******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++==================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
**++++++++======--------------------------------::::::::::::............::::::::::::.........................................................................................................................................:::--------------------------------------------------------------------------------------------------------------::::....................................................................................................                                  ..........................................................................................................................................................................................................::::::----======+++++++++++++++========----:::::..........::::::::::........:::::::::::::::::::::::::::::::::::::::::..........................................................................:::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---==========+++++++++++++========-------------------------------:::::::::::::::::::::::::::::::::::::::-----::::::::::-------------------------------------------------------------------------------------------------:::::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************###############################################################################################################################################************************#############################################%%%%%%%%%%%%%%%###################################################################################################################################################################################################################################################***************#####################*************************************************************************************************************#############################******************************************************************************************************************************************************************####***********##################################******************************************#######**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++==================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
*++++++++======----------------------------------:::::::::::............::::::::::::.........................................................................................................................................:::--------------------------------------------------------------------------------------------------------------::::....................................................................................................                                 .............................................................................................................................................................................................................:::::----======+++++++++++++++=========---::::::........::::::::::............::::::::::::::::::::::::::::::::::::::::::......................................................................::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--============+++++++++++=======---------------------------------:::::::::::::::::::::::::::::::::::::::------::::::::---------------------------------------------------------------------------------------------------::::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************###########################################################################################################################################***********************#########################%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%###################################################################################################################################################################################################################################################***************######################************************************************************************************************************##############################****************************************************************************************************************************************************************#####***********##################################*******************************************####*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++==================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
*++++++++======----------------------------------:::::::::::............::::::::::::.........................................................................................................................................:::--------------------------------------------------------------------------------------------------------------::::....................................................................................................                                 ...............................................................................................................................................................................................................::::-----=====+++++++++++++++=========----::::::.....::::::::::.................::::::::::::::::::::::::::::::::::::::::::..................................................................::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---============+++++++++=======----------------------------------:::::::::::::::::::::::::::::.::::::::::------:::::::-----------------------------------------------------------------------------------------------------:::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************#####################################################################################################################################*************************#######################%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################***************######################************************************************************************************************************###############################**************************************************************************************************************************************************************######************#################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++==================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++++++======----------------------------------:::::::::::............::::::::::::.........................................................................................................................................:::--------------------------------------------------------------------------------------------------------------::::....................................................................................................                                 ................................................................................................................................................................................................................:::::----=====+++++++++++++++++++++====----:::::...:::::::::::.....................:::::::::::::::::::::::::::::::::::::::::::.............................................................::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::---=============++++++++=====-----:::::::-------------------------::::::::::::::::::::::::::::...:::::::::--------:::--------------------------------------------------------------------------------------------------------::::::::::::...............................................................................................................................................................:::---================+++++++++++++++***************************************************************************************************************************##############################################################################################################################**************************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%###################################################################################################################################################################################################################################################***************#######################***********************************************************************************************************###############################**************************************************************************************************************************************************************######************#################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++===================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++++=======----------------------------------:::::::::::............::::::::::::.........................................................................................................................................::--------------------------------------------------------------------------------------------------------------:::::....................................................................................................                                ..................................................................................................................................................................................................................::::::----===+++++++++======+++++++=====----:::::::::::::::::..........................::::::::::::::::::::::::::::::::::::::::::.........................................................:::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---======--=====+++++++====-----::::::::::------------------------:::::::::::::::::::::::::::::.::::::::::----------------------------------------------------------------------------------------------------------------------::::::::::..............................................................................................................................................................:::---================+++++++++++++++***************************************************************************************************************************######################################################################################################################******************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################***************######################***********************************************************************************************************###############################**************************************************************************************************************************************************************######************#################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++====================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++++======-----------------------------------:::::::::::............::::::::::::.........................................................................................................................................::--------------------------------------------------------------------------------------------------------------:::::....................................................................................................                                ...................................................................................................................................................................................................................::::::---====+++++++========++++++++=====---::::::::::::::::..............................::::::::::::::::::--:--:::::::::::::::::::.....................................................:::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---======---====+++++++====----::::::::::::------------------------::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------::::::::..............................................................................................................................................................:::---================+++++++++++++++***************************************************************************************************************************###############################################################################################################**********************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################***************######################***********************************************************************************************************#############################****************************************************************************************************************************************************************######************#################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++====================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
++++++++======-------------------------------:::::::::::::::............::::::::::::.........................................................................................................................................::--------------------------------------------------------------------------------------------------------------:::::....................................................................................................                                .....................................................................................................................................................................................................................:::::---====+++++===========++++++++=====----:::::::::::::...................................:::::::::::::::-:--------::::::::::::::::.................................................:::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---======----====+++++++===----:::::.....:::-----------------------:::::::::::::::::::::::::::::..::::::::::--------------------------------------------------------------------------------------------------------------------------::::::..............................................................................................................................................................::::---===============+++++++++++++++***************************************************************************************************************************######################################################################################################***************************************################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################***************#####################************************************************************************************************************###############################**************************************************************************************************************************************************************######************################*#################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++===================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++++======-------------------------------:::::::::::::::............::::::::::::........................................................................................................................................:::--------------------------------------------------------------------------------------------------------------::::.....................................................................................................                                ......................................................................................................................................................................................................................:::::--====+++++====----====++++++++=====-----:::---:::::......................................::::::::::::::::----------::::::::::::::::.............................................::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--=======----====++++++====--:::::.......:::-----------------------:::::::::::::::::::::::::::::..::::::::::--------------------------------------------------------------------------------------------------------------------------::::::..............................................................................................................................................................::::---===============++++++++++++++++**************************************************************************************************************************######################################################################################***************************************************##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################***************###################**************************************************************************************************************###############################**************************************************************************************************************************************************************######************##################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++====================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++++======-------------------------------:::::::::::::::............::::::::::::........................................................................................................................................:::-------------------------------------------------------------------------------------------------------------:::::.....................................................................................................                               ........................................................................................................................................................................................................................::::---===++++===-------====+++++++++=====----------::::..........................................::::::::::::::::-----------:::::::::::::::..........................................:::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--=======-----====++++++===--::::.........::::----------------------::::::::::::::::::::::::::::....:::::::::----------------------------------------------------------------------------------------------------------------------------:::::.............................................................................................................................................................::::---================+++++++++++++++**************************************************************************************************************************#######################################################################**************************************************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################****************################****************************************************************************************************************############################*##**************************************************************************************************************************************************************######************##################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++===================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++++=======------------------------------::::::::::::::::............::::::::::::........................................................................................................................................:::-------------------------------------------------------------------------------------------------------------:::::.....................................................................................................                               .........................................................................................................................................................................................................................::::--====+++===--------====++++++++++=====---------::::............................................::::::::::::::::------------::::::::::::::.......................................::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---=======-----===+++++++===--:::..........::::----------------------:::::::::::::::::::::::::::.....::::::::::---------------------------------------------------------------------------------------------------------------------------:::::..............................................................................................................................................................:::---================++++++++++++++++*************************************************************************************************************************##################################################################*******************************+++++++++++++++******************##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################*****************############*******************************************************************************************************************###############################**************************************************************************************************************************************************************######************##################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++====================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++++=======-----------------------------:::::::::::::::::............::::::::::::........................................................................................................................................::-------------------------------------------------------------------------------------------------------------::::::.....................................................................................................                               .........................................................................................................................................................................................................................::::--====++===---::::----===+++++++++++======------::::.................................................:::::::::::::::------------:::::::::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---=======------===++++++===---::...........::::----------------------::::::::::::::::::::::::::......::::::::::----------------------------------------------------------------------------------------------------------------------------::::..............................................................................................................................................................:::----===============++++++++++++++++*************************************************************************************************************************##############################################################**************++++++++++++++++++++++++++++++++++++**************##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%########################################################################################################################################################################################################################################################****************#########**********************************************************************************************************************###############################**************************************************************************************************************************************************************######************##################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++++======----------------------------::::::::::::::::::::...........::::::::::::........................................................................................................................................::-------------------------------------------------------------------------------------------------------------::::::.....................................................................................................                               .........................................................................................................................................................................................................................::::--====++===--:::::::---===++++++++++++=======----:::.....................................................:::::::::::::::-----------::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--========------===++++++===--:::...........::::----------------------:::::::::::::::::::::::::......:::::::::::----------------------------------------------------------------------------------------------------------------------------::::..............................................................................................................................................................:::----================++++++++++++++++************************************************************************************************************************#########################################################*************+++++++++++++++++++++++++++++++++++++++++***********##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%########################################################################################################################################################################################################################################################*****************##*****************************************************************************************************************************##############################**************************************************************************************************************************************************************######************##################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++====================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++++======---------------------------:::::::::::::::::::::...........::::::::::::.......................................................................................................................................:::------------------------------------------------------------------------------------------------------------:::::::.....................................................................................................                              ..........................................................................................................................................................................................................................:::--=====++===--::::::::---===++++++++++++========---:::.......................................................:::::::::::::::-------------:::::::::::::::................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--========-------===++++++===--::............::::----------------------:::::::::::::::::::::::::......::::::::::::---------------------------------------------------------------------------------------------------------------------------::::..............................................................................................................................................................:::----================++++++++++++++++************************************************************************************************************************#####################################################************++++++++++++++++++++++++++++++++++++++++++***********####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%#########################################################################################################################################################################################################################################################************************************************************************************************************************************************##############################**************************************************************************************************************************************************************######*************#################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++====================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++=======---------------------------:::::::::::::::::::::...........::::::::::::.......................................................................................................................................:::------------------------------------------------------------------------------------------------------------:::::::.....................................................................................................                              ..........................................................................................................................................................................................................................:::--====+++===--:::.:::::---===++++++++++++++======---:::..........................................................::::::::::::::--------------::::::::::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::---========-------===++++++===--::............::::----------------------:::::::::::::::::::::::::....:.:::::::::::::--------------------------------------------------------------------------------------------------------------------------::::..............................................................................................................................................................:::----================+++++++++++++++++***********************************************************************************************************************#################################################************++++++++++++==========+++++++++++++++++++++**********########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%##########################################################################################################################################################################################################################################################*************************************************************************************************************************************************###############***########*****************************************************************************************************************************************************************######**************################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++====================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++======--------------------------:::::::::::::::::::::::...........::::::::::::.......................................................................................................................................:::-----------------------------------------------------------------------------------------------------------::::::::....................................................................................................                              ...........................................................................................................................................................................................................................:::--====++===--::::...::::---===+++++++++++++++=====--::::.............................................................:::::::::::::---------------::::::::::::::.....:::................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--========--------===++++++==---::............::::----------------------::::::::::::::::::::::::.....::::::::::::::::-------------------------------------------------------------------------------------------------------------------------::::..............................................................................................................................................................:::----=================++++++++++++++++++*********************************************************************************************************************###########################################**************++++++++++++================+++++++++++++++**********########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%########################################################################################################################################################################################################################################################*************************************************************************************************************************************************#############*****######*******************************************************************************************************************************************************************######**************#################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
++++++======--------------------------:::::::::::::::::::::::...........::::::::::::.......................................................................................................................................:::-----------------------------------------------------------------------------------------------------------::::::::....................................................................................................                              ..........................................................................................................................................................................................................................:::---====++===--::::....:::::--====+++++++++++++++====--:::.................................................................:::::::::::::----------------::::::::::::::::::.....................................................................................:::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:.....................................................................................................................................................................................................................................................................................................................................::---========----:---===++++++==---::............::::----------------------::::::::::::::::::::::::....:::::::::::::::::-------------------------------------------------------------------------------------------------------------------------::::..............................................................................................................................................................:::----=================+++++++++++++++++++**************************************************************************************************************+*****#######################################*************++++++++++++===================++++++++++++++**********###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%#########################################################################################################################################################################################################################################################**************************************************************************************************************************************************###########******######*******************************************************************************************************************************************************************######**************#################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++======--------------------------::::::::::::::::::::::::..........::::::::::::.......................................................................................................................................:::----------------------------------------------------------------------------------------------------------:::::::::....................................................................................................                              ................................................................:.........................................................................................................................................................:::--=====+====--:::.......::::--====+++++++++++++++====--:::...................................................................:::::::::::::-----------------:::::::::::::::...................................................................................:::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:....................................................................................................................................................................................................................................................................................................................................:::--========---::::--===++++++==---::............::::----------------------::::::::::::::::::::::::...:::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------::::..............................................................................................................................................................::::----==================+++++++++++++++++++************************************************************************************************************+++****######################*************************++++++++++++=====================+++++++++++++*********################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%##########################################################################################################################################################################################################################################################******************************************************************************************************************************************************###*********########******************************************************************************************************************************************************************######**************#################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++======--------------------------:::::::::::::::::::::::::.........::::::::::::.......................................................................................................................................:::----------------------------------------------------------------------------------------------------------:::::::::....................................................................................................                             ................................................................:::........................................................................................................................................................:::--==========--::::......:::::--=====++++++++++++++===---:::......................................................................::::::::::::-----------------::::::::::::::....................................................................................:::::::::::::::::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:....................................................................................................................................................................................................................................................................................................................................:::--========--:::::--===++++++==---::............::::----------------------::::::::::::::::::::::::..:::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------::::...........................................................................................................................................................:::::::----====================++++++++++++++++++****************************************###########******************************************************+++++*****###################*********************+++++++++++++=======================++++++++++++*********####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%##########################################################################################################################################################################################################################################################******************************************************************************************************************************************************************#########*****************************************************************************************************************************************************************######**************#################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++======---------------------------:::::::::::::::::::::::::.......:::::::::::::......................................................................................................................................::::---------------------------------------------------------------------------------------------------------::::::::::....................................................................................................                             ................................................................:::........................................................................................................................................................:::--==========--:::.........::::---====++++++++++++++===--::::........................................................................:::::::::::::------------------::::::::::::::::::..............................................................................::::::::::::::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................:....................................................................................................................................................................................................................................................................................................................................:::--=======---::::::--==++++++==---::............::::----------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------:::::.........................................................................................................................................................:::::::::----=========---=========++++++++++++++++++++********************************##################****************************************************+++++*****##################****************+++++++++++++++========================+++++++++++*********####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%######################%%#################################################################################################################################################################################################################################******************************************************************************************************************************************************************#########****************************************************************************************************************************************************************#######***************################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###########**********************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++======-----------------------------::::::::::::::::::::::::.......:::::::::::::......................................................................................................................................:::----------------------------------------------------------------------------------------------------------::::::::::....................................................................................................                             ................................................................::::.......................................................................................................................................................::---==========--:::..........::::---=====++++++++++++===---:::............................................................................::::::::::::-------------------::::::::::::::::..............................................................................:::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................:....................................................................................................................................................................................................................................................................................................................................:::--=======--:::::::--==++++++==--:::............::::----------------------:::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------:::::.........................................................................................................................................................::::::::::----========------=========++++++++++++++++++++************************##########################*************************************************++++++*****##################*****++++++++++++++++++++==========================+++++++++++**********#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%##%%############%%%%#################################################################################################################################################################################################################################*****************************************************************************************######################****************************************************#########****************************************************************************************************************************************************************########**************################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############*********************************************************************+++++++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++======-----------------------------::::::::::::::::::::::::::.....:::::::::::::......................................................................................................................................:::---------------------------------------------------------------------------------------------------------:::::::::::....................................................................................................                             ................................................................::::......................................................................................................................................................:::--===========--:::...........::::----======+++++++++====--::::..............................................................................:::::::::::::------------------::::::::::::::.................................................................................::::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................:....................................................................................................................................................................................................................................................................................................................................:::---====---::::::::--===++++===--:::............::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------::::::..........................................................................................................................................................::::::::::----========-------=========+++++++++++++++++********************#################################***********************************************+++++++*****#################*****++++++++++++++=============================++++++++++**********########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################************************************************************************************##########################****************************************************#########*****************************************************************************************************************************************************************########**************################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################*********************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++======-----------------------------:::::::::::::::::::::::::::....::::::::::::.......................................................................................................................................:::---------------------------------------------------------------------------------------------------------::::::::::.....................................................................................................                             ................................................................::::......................................................................................................................................................:::--===========--:::............::::----=======++++++=====---:::..................................................................................::::::::::::------------------::::::::::::::................................................................................:::::::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................................................................................................................:....................................................................................................................................................................................................................................................................................................................................:::----==---:::::::::--===++++===--:::............::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------::::::............................................................................................................................................................:::::::::----=======---------=========++++++++++++++*******************#####################################**********************************************+++++++*****#################****+++++==================================+++++++++++***********###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################################################********************************************************************************###############################****************************************************#########*****************************************************************************************************************************************************************########**************################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################******************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++=======-------------------------------:::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................:::--------------------------------------------------------------------------------------------------------:::::::::::.....................................................................................................                            .................................................................::::......................................................................................................................................................::---===========--:::.............:::::----===============----:::.....................................................................................:::::::::::::-------------------::::::::::::::.............................................................................::::::::::::::::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................:::....................................................................................................................................................................................................................................................................................................................................:::-------::::....:::--========---::..............::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------:::::...............................................................................................................................................................:::::::-----=======----------========+++++++++++++*****************#########################################*******************************************+++++++++*****#################****+++================================+++++++++++**********########################################%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################**************************************************************************#####################################*************************************************#############******************************************************************************************************************************************************************#########*************################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################*****************************************************************+++++++++++++++++++++++++++++++++++++++++++====================================================---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++=======-------------------------------:::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................:::-------------------------------------------------------------------------------------------------------::::::::::::.....................................................................................................                            ................................................................:::::.....................................................................................................................................................:::---===========--:::...............:::::----============----::::........................................................................................:::::::::::::------------------:::::::::::::::.............................................................................::::::::::::::::::::::::::::::::::::..............................................................................................................................................................................................................................................................................................................................................................................................................................................:.....................................................................................................................................................................................................................................................................................................................................::::----:::::.....:::--========--:::..............::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------::::::................................................................................................................................................................:::::::-----=======----::-----========++++++++++***************##############################################***********************++++***************+++++++++*****#################****++=============================+++++++++++***********###########################################%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################################################******************************************************************############################################**************************************************###########********************************************************************************************************************************************************************#########*************################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################*****************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++=======-------------------------------:::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................:::-------::::-------------------------------------------------------------------------------------------:::::::::::::.....................................................................................................                           .................................................................:::::.....................................................................................................................................................:::--============--:::.................:::::-----======------:::::............................................................................................::::::::::::-------------------::::::::::::::::..........................................................................:::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................:......................................................................................................................................................................................................................................................................................................................................:::::::::::.......:::--======---:::..............::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------:::::...................................................................................................................................................................::::::-----======----:::::-----=======+++++++**************#################################################******************++++++++++++++*********++++++++++*****#################****++=========================++++++++++***********######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################******##########################*******************************************************#######################################################**************************************************#######************************************************************************************************************************************************************************#########*************################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################*****************************************************************+++++++++++++++++++++++++++++++++++++++++++====================================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++======--------------------------------:::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................:::-------:::::-----------------------------------------------------------------------------------------::::::::::::::.....................................................................................................                           .................................................................::::::....................................................................................................................................................:::--===========---::...................::::::-------------:::::::...............................................................................................:::::::::::---------------------:::::::::::::::..........................................................................:::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................................................................................................................................................................................................................................................................................................................:........................................................................................................................................................................................................................................................................................................................................:::::::.........:::----------:::...............::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------:::::.....................................................................................................................................................................:::::-----======----::::::------=====+++++**************####################################################***************++++++++++++++++++******++++++++++++****##################***++====================++++++++++***********##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################*******########################***********************************************###############################################################***************************************************#######************************************************************************************************************************************************************************#########*************#################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################*****************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++=======--------------------------------:::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................::--------:::::---------------------------------------------------------------------------------------::::::::::::::::.....................................................................................................                           .................................................................::::::...................................................................................................................................................:::---===========---::.....................::::::--------:::::::::....................................................................................................::::::::::::---------------------::::::::::::::........................................................................::::::::::::::::::::::::::::::::::::::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::-------::::................::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------:::::........................................................................................................................................................................:::::----======----::::::::-----====+++++**********########################################################************+++++++++++++++++++++++++++++++++++++++****##################***++=================+++++++++***********#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%#################################################################################################################################################*******########################*****************************************###################################################################****************************************************########************************************************************************************************************************************************************************#########************##################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################****************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++=======--------------------------------:::::::::::::::::::::::::::::::::::::::::......................................................................................................................................:::--------::::::------------------------------------------------------------------------------------::::::::::::::::::.....................................................................................................                          ..................................................................:::::::..................................................................................................................................................:::---===========--:::.......................::::::----:::::::::.......................................................................................................:::::::::::::::---------------------::::::::::::::.......................................................................::::::::::::::::----------:::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::.................::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------:::::..........................................................................................................................................................................::::-----====-----::::::::::----===++++********###########################################################**********+++++++++++++++++++++++++++++++++++++++++****##################***++==============++++++++***********################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%#################################################################################################################################################******#########################*****************************#############################################################################*****************************************************########******************************************************************************************************************###***************************************************#########************##################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########*******************##################################*****************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++=======--------------------------------:::::::::::::::::::::::::::::::::::::::::......................................................................................................................................:::-------:::::::----------------------------------------------------------------------------------::::::::::::::::::::.....................................................................................................                          ..................................................................:::::::....::::..........................................................................................................................................:::---===========--:::.........................:::::::::::::.............................................................................................................::::::::::::::::----------------------:::::::::::::::.....................................................................::::::::::::::::::-----------:::::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::..................::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------:::::............................................................................................................................................................................::::-----===----:::::::::::::---==+++*****###############################################################**********+++++++++++++++++++++++++++++++++++++++++****##################***+++=========++++++++**********#####################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%################################################################################################################################################################################***********************###################################################################################*****************************************************########******************************************************************************************************##********########************************************************#########************##################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################*****************####################################****************************************************************++++++++++++++++++++++++++++++++++++++++++++====================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
+++======---------------------------------:::::::::::::::::::::::::::::::::::::::::......................................................................................................................................:::-------:::::::--------------------------------------------------------------------------------::::::::::::::::::::::.....................................................................................................                          ..................................................................:::::::..::::::..........................................................................................................................................:::--===========---::...........................::::::::::.................................................................................................................::::::::::::::::-----------------------::::::::::::::::....................................................................::::::::::::::::::::-----------::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::....................::::----------------------:::::::::::::::::::::::::::::::::::::::::::.::::::::-------------------------------------------------------------------------------------------------:::::.......... ..................................................................................................................................................................:::::-----=-----:::::.::::::::--==+++****#################################################################*********+++++++++++++++++++++++++++++++++++++++++****##################***+++=====++++++++*********##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%##################################################################################################################################################################################******************######################################################################################****************************************************#########******************************************************************************************************##********#########***********************************************#########************##################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################****************####################################****************************************************************++++++++++++++++++++++++++++++++++++++++++++====================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
++=======-------------------------------:::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................:::-------:::::::----------::::::::-------------------------------------------------------------:::::::::::::::::::::::....................................................................................................                          ...................................................................::::::::::::::::........................................................................................................................................::::--===========--:::...........................:::::::::.........................................................................................................................::::::::::::::-----------------------::::::::::::::::...................................................................::::::::::::::::::::---------::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------------:::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------::::::...............................................................................................................................................................................:::::----------::::.....::::::--==++**##################################################################**********+++++++++++++++++++++++++++++++++++++++++****##################****++++++++++++*********############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%#######################################################################################################################################################################################***********######################################################################################*******************************************************########*****************************************************************************************************###******###########*****#####*******####***************************#########*********#####################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################***********########################################**************************************************************++++++++++++++++++++++++++++++++++++++++++++====================================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++=======------------------------------::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................:::-------::::::::------:::::::::::::::::------------------------------------------------------::::::::::::::::::::::::....................................................................................................                          ...................................................................::::::::::::::::........................................................................................................................................:::---===========--:::............................::::::::...........................................................................................................................:::::::::::::::------------------------::::::::::::::::...................................................................:::::::::::::::::::::---:::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------------:::::::::::::::::::::::::::::::::::::::::::.::::::::---------------------------------------------------------------------------------------------:::::..................................................................................................................................................................................::::----------::::......:::::--==+***##################################################################**********+++++++++++++++++++++++++++++++++++++++++****###################***+++++++++*********###############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%#########################################################################################################################################################################################******########################################################################################*******************************************************########*****************************************************************************************************#####################**########*****########************************#########*********#####################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################***********########################################***************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++======-----------------------------::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................:::-------::::::::-----:::::::::::::::::::::::--:::------------------------------------------::::::::::::::::::::::::::....................................................................................................                         ....................................................................::::::::::::::::........................................................................................................................................:::---==========---::.............................:::::::............................................................................................................................::::::::::::::::::-------------------------::::::::::::::::::...................................................................:::::::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-------------------------:::::::::::::::::::::::::::::::::::::::::..::::::::-------------------------------------------------------------------------------------------:::::....................................................................................................................................................................................::::---------::::........::::-==+**###################################################################**********+++++++++++++++++++++++++++++++++++++++++****###################*****************###################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%#######################################################################################################################################################################################################################################################################################*****************************************************#########*****************************************************************************************************##############################################**********************#########********######################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################*********#########################################***************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++======----------------------------:::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................:::--------::::::::----:::::::::::::::::::::::::::::::::::::::::::::::-----------------------:::::::::::::::::::::::::::....................................................................................................                         ....................................................................::::::::::::::::........................................................................................................................................:::---=========---:::..............................::::::............................................................................................................................::::::::::::::::::::::--------------------------::::::::::::::::......................................................................:::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................::.......................................................................................................................................................................................................................................................................................................................................................................................::::------------------------------------::::::::::::::::::::::::::::::..:::::::::---------------::-----------------------------------------------------------------------::::::......................................................................................................................................................................................::::--------:::::........:::-==+**###################################################################**********++++++++++++++++++++++++++++++++++++++++++****###################************#######################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%########################################################################################################################################################################################################################################################################################*****************************************************#########*****************************************************************************************************################################################********************#########*******#######################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################********#########################################***************************************************************+++++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++======----------------------------:::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................:::-------:::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------::::::::::::::::::::::::::::.....................................................................................................                        .....................................................................::::::::::::::::........................................................................................................................................:::--==========--:::...............................:::::.............................................................................................................................::::::::::....::::::::::::--------------------------::::::::::::::::........................................................................::::::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................--:......................................................................................................................................................................................................................................................................................................................................................................................::::------------------------------------::::::::::::::::::::::::::::.....:::::::::::-------:::::::::::------------------------------------------------------------------:::::.........................................................................................................................................................................................::::--------:::::.......:::--=+**###################################################################**********++++++++++++++++++++++++++++++++++++++++++****####################*******#########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################*****************************************************#########****************************************************************************************************##################################################*******************#########*******#######################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################********#########################################*****************************************************************++++++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+=======---------------------------::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................:::-------:::::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                       ......................................................................::::::::::::::::........................................................................................................................................:::--=========---:::...............................::::..............................................................................................................................:::::::::........:::::::::::::--------------------------::::::::::::::::........................................................................::::...............................................................................................................................................................................................................................................................................................................................................................................................................................--:......................................................................................................................................................................................................................................................................................................................................................................................::::------------------------------------::::::::::::::::::::::.:::::..:..:::::::::::::::::::::::::::::::--------------------------------------------------------------::::::...........................................................................................................................................................................................:::::------::::::.......::--=+**##################################################################************+++++++++++++++++++++++++++++++++++++++++****####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################****************************************************#########****************************************************************************************************####################################################*****************#########******#########################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################################******#########################################*****************************************************************++++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+======----------------------------::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................:::-------::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                       ......................................................................::::::::::::::::........................................................................................................................................:::--========---:::................................::::.............................................................................................................................:::::::::............:::::::::::::---------------------------::::::::::::::::::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:--.......................................................................................................................................................................................................................................................................................................................................................................................::::-----------------------------------:::::::::::::::::::::::..::::..:...:::::::::::::::::::::::::::::::-----------------------------------------------------------::::::..............................................................................................................................................................................................::::::-----:::::::.....::--=++*#################################################################*************+++++++++++++++++++++++++++++++++++++++++****##################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################****************************************************#########****************************************************************************************************#######################*#############################****************#########******#########################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################################******#########################################******************************************************************+++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+======----------------------------::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                       ......................................................................::::::::::::::::........................................................................................................................................:::---======---::::.................................::..............................................................................................................................:::::::::...............:::::::::::::----------------------------::::::::::::::::::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................--.......................................................................................................................................................................................................................................................................................................................................................................................::::-----------------------------------::::::::::::::::::.......::::.......::::::::::::::::::::::::::::::----------------------------------------------------------::::::..........  ....................................................................................................................................................................................:::::::----:::::::...::::-=++**################################################################*************+++++++++++++++++++++++++++++++++++++++++****##################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################***************************************************##########***************************************************************************************************#######################*#############################****************#########******#########################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################################******#########################################******************************************************************+++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
=======---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                       ......................................................................::::::::::::::::........................................................................................................................................:::---=====----:::..................................::.............................................................................................................................::::::::::...................:::::::::::::------------------------------::::::::::::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................--.......................................................................................................................................................................................................................................................................................................................................................................................::::----------------------------------::::::::::::::::::::..................::::::::::::::::::::.....:::::-------------------------------------------------------:::::::...................................................................................................................................................................................................::::::----:::::::...:::-==+**################################################################*************+++++++++++++++++++++++++++++++++++++++++****################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%##########################%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%#####################################################################################################################################################################################################################################################################################**************************************************###########********************************************************************************++*****************######################***##############################***************#########********######################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################******#########################################******#*************************************************************++++++++++++++++++++++++++++++++++++++++=======================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
=======---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                       ......................................................................::::::::::::::::........................................................................................................................................:::---====----:::..................................................................................................................................................................::::::::::......................::::::::::::::------------------------------:::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:--.......................................................................................................................................................................................................................................................................................................................................................................................::::----------------------------------::::::::::::::::::::..:::::::::.........:::::::::::::::::.......::::::---------------------------------------------------:::::::.....................................................................................................................................................................................................:::::::----::::::::::::-==+**#################################################################************++++++++++++++++++++++++++++++++++++++++****#################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%#####################################################################################################################################################################################################################################################################################*************************************************###########********************************************************************************++*****************######################***##############################***************########*********######################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################******#########################################********************************************************************++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
=======---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................:::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                      ......................................................................:::::::::::::::::........................................................................................................................................:::----==----::::..................................................................................................................................................................::::::::::...........................::::::::::::--------------------------------:::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:--.......................................................................................................................................................................................................................................................................................................................................................................................::::----------------------------------:::::::::::::::::::::::::::::...:.........::::::::::::::..........:::::-------------------------------------------------::::::......... ...............................................................................................................................................................................................:::::------::::::::::--=+**###################################################################***********+++++++++++++++++++++++++++++++++++++++****#################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%#####################################################################################################################################################################################################################################################################################************************************************###########********************************************************************************++*****************######################***###############################**************#######**********######################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################********######################################********************************************************************++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
======---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                      .............................................................::::.....:::::::::::::::::........................................................................................................................................::::--------::::...................................................................................................................................................................::::::::::..............................::::::::::::-----------------------------------::::::::::::::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................:--.......................................................................................................................................................................................................................................................................................................................................................................................::::-----------------------------------:::::::::::::::::::::::::::....:...........:::::::::::............:::::::--------------------------------------------::::::............................................................................................................................................................................................................:::::------:::::::::--=+**####################################################################**********++++++++++++++++++++++++++++++++++++++*****#################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%########################################################################################################################################################################################################################################################################################**********************************************###########********************************************************************************++*****************######################****###############################*************######************######################################******************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************#########################################*********#####################################**#******************************************************************++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
======--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                    ..............................................................::::::....:::::::::::::::::........................................................................................................................................::::-------::::...................................................................................................................................................................:::::::::::.................................::::::::::::------------------------------------::::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................:--.......................................................................................................................................................................................................................................................................................................................................................................................::::------------------------------------::::::::::::::::::::::::::::::....................................::::::::::--------------------------------------::::::...............................................................................................................................................................................................................:::::------::::::::--=+**#####################################################################*********+++++++++++++++++++++++++++++++++++*******##################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################*******************************************#############*******************************************************************************++*****************######################***################################**************####**************#####################################*****************************************************************************************************************************************************************************************************************************************************************************************************************######************************************************************************************###########################################*******#####################################**##*****************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
=====---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................                    .............................................................::::::::...:::::::::::::::::.........................................................................................................................................:::::---:::::....................................................................................................................................................................:::::::::::...................................:::::::::::::--------------------------------------::::::::::::::::::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................:--.......................................................................................................................................................................................................................................................................................................................................................................................::::-------------------------------------:::::::::::::::::::::::::::::......................................:::::::::::::-------------------------------:::::::.................................................................................................................................................................................................................:::::-------::::::--=+**######################################################################********++++++++++++++++++++++++++++++++********####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################################################################################################*****************************************#############*******************************************************************************++*****************######################***################################********************************######################################***************************************************************************************************************************************************************************************************************************************************************************************************************#######*************************************************************************************##########################################********####################################**##******************************************************************+++++++++++++++++++++++++++++++++++++++==========================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
====----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                     .............................................................::::::::::::::::::::::::::::..........................................................................................................................................:::::::::::.....................................................................................................................................................................:::::::::::....................................::::::::::::::::::------------------------------------:::::::::::::::::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................:--.....................................................................................................................................................................................................................:::::.............................................................................................................................................................::::---------------------------------------::::::::::::::::::::::::::::........................................::::::::::::::-------------------------:::::::.............  .....................................................................................................................................................................................................::::::-------:::--==+**######################################################################********++++++++=====++++++++++++++++*********######################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################################################################################################################################################***************************************#############*******************************************************************************+++***************#######################***#################################********************************#####################################***************************************************************************************************************************************************************************************************************************************************************************************************************########************************************************************************************###########################################***********################################**##******************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
===-----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                     .............................................................::::::::::::::::::::::::::::..........................................................................................................................................::::::::::......................................................................................................................................................................:::::::::::....................................::::::::::::::::::::::--------------------------------------::::::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................:--....................................................................................................................................................................................................................:::::::............................................................................................................................................................::::------------------------------------------::::::::::::::::::::::::::::.........................................:::::::::::::--------------------:::::::.......................................................................................................................................................................................................................::::::-----------==+**######################################################################********+++++++=======+++++++++++++********#########################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################################################################################################**************************************##############******************************************************************************+++***************#######################***###########*#####################********************************######################################**************************************************************************************************************************************************************************************************************************************************************************************************************########************************************************************************************###########################################************###############################**##*******************************************************************+++++++++++++++++++++++++++++++++++++++=========================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
===------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                    ..............................................................::::::::::::::::::::::::::::............................................................................................................................................::::::........................................................................................................................................................................:::::::::::...................................:::::::--:::::::::::::::::::--------------------------------------:::::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................................................................................................:--...................................................................................................................................................................................................................::::::::::..........................................................................................................................................................::::---------------------------------------------:::::::::::::::::::::::::::............................................::::::::::-----------------::::::..........................................................................................................................................................................................................................::::::----------=++***#####################################################################********++++++========++++++++++*********###########################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################################################################################################*************************************##############******************************************************************************+++***************#######################***#################################********************************######################################*************************************************************************************************************************************************************************************************************************************************************************************************************#########*********************************************************************************##############################################****************###########################**###******************************************************************+++++++++++++++++++++++++++++++++++++++==========================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
==-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                    ..............................................................::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................:::::::::::...................................::::--------::::::::::::::::::::---------------------------------------::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................................:--..................................................................................................................................................................................................................:::::::::::..........................................................................................................................................................::::------------------------------------------------:::::::::::::::::::::::::::::::........................................::::::::--------------::::::.............................................................................................................................................................................................................................:::::----------=++***#####################################################################********+++++++======+++++++++********##############################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################***********************************##############******************************************************************************+++****************######################***###########*#####################********************************######################################*************************************************************************************************************************************************************************************************************************************************************************************************************#########*********************************************************************************##############################################****************###########################**###*******************************************************************++++++++++++++++++++++++++++++++++++++++========================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
=--------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                    ..............................................................::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................:::::::::::..................................::::----------::::::::::::::::::::::------------------------------------------:::::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................:--..................................................................................................................................................................................................................:::::::::::..........................................................................................................................................................::::----------------------------------------------------::::::::::::::::::::::::::::::::::::...................................:::::------------:::::................................................................................................................................................................................................................................:::::--------==++***#####################################################################*******++++++++====++++++++********#################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################################################################################################################################################********************************##############*******************************************************************************++****************######################***##########**#####################********************************#######################################************************************************************************************************************************************************************************************************************************************************************************************************************#########*********************************************************************************##############################################*****************##########################***##*******************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
=--------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                   ..............................................................:::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................:::::::::::..................................:::-----==------::::::::::::::::::::::::-------------------------------------------:::::::::::::::::::::::..............................................................................................................................................................................................................................................................................................................................................................................................................................:--.................................................................................................................................................................................................................:::::::::::::.........................................................................................................................................................::::-------------------------------------------------------:::::::::::::::::::::::::::::::::::..................................::::::----------::::..................................................................................................................................................................................................................................:::::-------==++***#####################################################################*******++++++++++++++++++*******####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################################################################################################################################################################********************************#############*******************************************************************************++****************#######################*##########****###################*********************************########################################***********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################******************#########################*************************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
==-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                   ..............................................................:::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................:::::::::::.................................:::----=======-----::::::::...:::::::::::::::----------------------------------------------::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................:-:.................................................................................................................................................................................................................:::::::::::::.........................................................................................................................................................::::----------------------------------------------------------------::::::::::::::::::::::::::::..................................:::::-------:::::....................................................................................................................................................................................................................................:::::------==+++***####################################################################*******++++++++++++++++*******######################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################********************************#############******************************************************************************++****************##################################****#################***********************************########################################***********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################******************#########################*************************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
==-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                  ...............................................................:::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................::::::::::..................................:::---=========-----:::::::........::::::::::::::-----------------------------------------------::::::::::::::::::::::::.................................................................................................................................................................................................................................................................................................................................................................................................................:-:.................................................................................................................................................................................................................:::::::::::::.........................................................................................................................................................::::--------------------------------------::-----------------------------:::::::::::::::::::::::::.................................:::::-----:::::......................................................................................................................................................................................................................................:::::-----===++***####################################################################*******++++++++++++++*******########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################********************************############******************************************************************************++*****************#################################*****##############*************************************########################################***********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################******************#########################**************************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
==-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................                  ...............................................................:::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................::::::::::.................................::::--============-----:::::............::::::::::::::---------------------------------------------------:::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................:-:.................................................................................................................................................................................................................:::::::::::::.........................................................................................................................................................::::----------------------------------::::::::::::------------------------------:::::::::::::::::::.................................:::::::::::::........................................................................................................................................................................................................................................:::::-----==++***####################################################################*******+++++++++++*******###########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################################################**#****************************#############*****************************************************************************++*****************#################################******##########****************************************#########################################**********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################*******************########################**************************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
===------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................                  ...............................................................:::::::::::::::::::::::::::::...........................................................................................................................................................................................................................................................................................................................:::::::::.................................:::---==============----:::::...............::::::::::::::-----------------------------------------------------:::::::::::::::::::::::....................................................................................................................................................................................................................................................................................................................................................................................................:-:.................................................................................................................................................................................................................:::::::::::::.........................................................................................................................................................::::-----------------------------:::::::::::::::::::::---------------------------------:::::::::::::.................................:::::::::::..........................................................................................................................................................................................................................................:::::----==++****###################################################################********+++++++*******##############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*##############%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################################################################################################################################*##*****************##********#############*****************************************************************************++*****************########*########################*******######*******************************************#########################################**********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################********************#######################***************************************************************************+++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
===-----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................                .................................................................::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................::::::::..................................:::--================-----::::.................:::::::::::::::------------------------------------------------------::::::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................................................:-:.................................................................................................................................................................................................................:::::::::::::.........................................................................................................................................................:::----------------------------:::::::::::::::::::::::::::--------------------------------::::::::::::................................::::::::.............................................................................................................................................................................................................................................:::::---===++***###################################################################********************##############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################***###############%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################**************####*******#############******************************************************************************+******************####*****#######################*********************************************************#########################################*********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################**********************#################***##**************************************************************************++++++++++++++++++++++++++++++++++++++++==========================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
===-----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................                .................................................................:::::--:::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................::::::::..................................:::--==================----::::...................::::::::::::::::---------------------------------------------------------::::::::::::::::::::...........................................................................................................................................................................................................................................................................................................................................................................................:-:.................................................................................................................................................................................................................::::::::::::..........................................................................................................................................................:::---------------------------::::::::::::::::::::::::::::::::-------------------------------::::::::::.................................::::................................................................................................................................................................................................................................................:::::---==++***###################################################################******************#################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################****###############%%%%%%%%#####################################################################################################################################################################################################################################################################################################################################################################************########***###############*****************************************************************************+******************####*****######################**********************************************************##########################################********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################**********************################****#****************************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
===-----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................                .................................................................::::----::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................::::::::..................................:::--===================----::::........................:::::::::::::::------------------------------------------------------------:::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................................:-:..................................................................................................................................................................................................................:::::::::::.........................................................................................................................................................::::---------------------------::::::::::::::::::::::::::::::::::::------------------------------::::::::.....................................................................................................................................................................................................................................................................................::::---==++***##################################################################*****************###################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*****###############%%%%%%########################################################################################################################################################################################################################################################################################################################################################################*********###########################*****************************************************************************+******************###*******####################***********************************************************##########################################********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################**********************###############*****#****************************************************************************++++++++++++++++++++++++++++++++++++++++==========================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
===---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................               ..................................................................::::----::::::::::::::::::::.............................................................................................................................................................................................................................................................................................................................::::::..................................:::---=====================---::::...........................:::::::::::::::-------------------------------------------------------------:::::::::::::::...................................................................................................................................................................................................................................................................................................................................................................................:-:..................................................................................................................................................................................................................::::::::::............................................................................................................................................::............::::--------------------------:::::::::::::::::::::::::::::::::::::::::----------------------------:::::::.....................................................................................................................................................................................................................................................................................::::--==++***#################################################################*****************#####################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*****###############################################################################################################################################################################################################################################################################################################################################################################################*******############################****************************************************************************+****************************###################************************************************************##########################################********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################***********************############************************************************************************************+++++++++++++++++++++++++++++++++++++++++==========================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
==---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................               ..................................................................::::----::::::::::::::::::::..............................................................................................................................................................................................................................................................................................................................::::...................................:::--=======================---:::..............................::::::::::::::::--------------------------------------------------------------:::::::::::::::..............................................................................................................................................................................................................................................................................................................................................................................--:..................................................................................................................................................................................................................::::::::::.........................................................................................................................................:::::::::........::::--------------------------::::::::::::::::::::::::::::::::::::::::::::::------------------------::::::::....................................................................................................................................................................................................................................................................................:::--=++***#################################################################*****************######################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*****################################################################################################################################################################################################################################################################################################################################################################################################******#############################***************************************************************************+*****************************##############***************************************************************############################################*******************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################**************************########**************************************************************************************+++++++++++++++++++++++++++++++++++++++++=========================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................              ...................................................................::::----::::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................:::--========================---:::.................................:::::::::::::::::--------------------------------------------------------------::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................--:...................................................................................................................................................................................................................::::::::.........................................................................................................................................::::::::::::....::::::--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::----------------------::::::::::..................................................................................................................................................................................................................................................................................::--=++***################################################################******************#######################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*****################################################################################################################################################################################################################################################################################################################################################################################################******#############################***************************************************************************++****************************########*********************************************************************#############################################******************************************************************************************************************************************************************************************************************************************************************************************************##########*********************************************************************************#############################################**************************########***************************************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................:::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................              ...................................................................::::-----:::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................:::--=========================---:::....................................::::::::::::::::::--------------------------------------------------------------:::::::::::::::....................................................................................................................................................................................................................................................................................................................................................................--:....................................................................................................................................................................................................................::::::.........................................................................................................................................:::::::::::::::::::::::--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------:::::::::::::.............................................................................................................................................................................................................................................................................::--=++***###################################***########################********************#######################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*****#################################################################################################################################################################################################################################################################################################################################################################################################******############################***************************************************************************++******************************###***********************************************************************##############################################******************************************************************************************************************************************************************************************************************************************************************************************************###########*********************************************************************************######################*********#############**************************#####*##****************************************************************************************++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................              ...................................................................::::-----:::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................:::--==========================---:::.........................................:::::::::::::::::------------------------------------------------------------::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................--:.....................................................................................................................................................................................................................::::.........................................................................................................................................:::::::::::::::::::::::---------------------------:::::::::::::::::::::::::.:::::::::::::::::::::::::::::::------------------:::::::::::::::::.......................................................................................................................................................................................................................................................................::--=+****################################***********#################**********************########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%#############################*****#################################################################################################################################################################################################################################################################################################################################################################################################******#############################**************************************************************************++********************************************************************************************************##############################################******************************************************************************************************************************************************************************************************************************************************************************************************###########*********************************************************************************######################**********############***************************####*##****************************************************************************************++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
----::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................              ....................................................................::::-----:::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................:::--===========================--::::............................................::::::::::::::::::-----------------------------------------------------------::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................--:.................................................................................................................................................................................................................................................................................................................................................................:::::::-----::::::::::::---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------:::::::::::::::::::::..................................................................................................................................................................................................................................................:::............::--=+***###############################****************************************************##########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%############################*****#################################################################################################################################################################################################################################################################################################################################################################################################******#############################**************************************************************************++******************************************************************************************************################################################******************************************************************************************************************************************************************************************************************************************************************************************************##########************************************************************************************##############*******************###########*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
::::::::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................::-------:::::::::::::::::::::::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................              ....................................................................::::-----:::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................:::--===========================---::::...............................................::::::::::::::::::::----------------------------------------------------------:::::::::::::::::.........................:::::........................................................................................................................................................................................................................................................................................................................--:.................................................................................................................................................................................................................................................................................................................................................................::::::--------::::::::::---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------::::::::::::::::::::::.....................................................  .........................................................................................................................................................................................:::............::--=+***#############################******************************************************##########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*****#################################################################################################################################################################################################################################################################################################################################################################################################******#############################**************************************************************************++****************************************************************************************************##################################################******************************************************************************************************************************************************************************************************************************************************************************************************##########************************************************************************************#############********************###########*************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
:::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................::-------::::::::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................              ....................................................................::::-----:::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................::---============================---:::.................................................::::::::::::::::::::::::--------------------------------------------------------::::::::::::::::::..................::::::::::.....................................................................................................................................................................................................................................................................................................................--:................................................................................................................................................................................................................................................................................................................................................................::::::------------:::::-----------------------------::::::::::::::::::::....:...:::::::::::.........::::::::::::::::::::-------------::::::::::::::::::::::...............................................           ...................................................................................................................................................................................::::...........::--=+****###########*##########************************************************************############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*****#################################################################################################################################################################################################################################################################################################################################################################################################******#############################**************************************************************************++*************************************************************************************************#####################################################******************************************************************************************************************************************************************************************************************************************************************************************************##########************************************************************************************##########***********************###########*************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++========================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................:::-------::::::::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................              ....................................................................::::-----::::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................::---=============================---:::................................................:::::::::::::::::::::::::::::--------------------------------------------------------::::::::::::::::::::.........:::::::::::::....................................................................................................................................................................................................................................................................................................................--:...............................................................................................................................................................................................................................................................................................................................................................::::::-----------------------------------------------:::::::::::::::::::..........::::::::::............::::::::::::::::::::::-------------:::::::::::::::::::............................................            ..................................................................................................................................................................................:::::...........::--=+****##########************************++++++++++++************************************############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*****#################################################################################################################################################################################################################################################################################################################################################################################################*******############################**************************************************************************++********************************************************************************************##########################################################******************************************************************************************************************************************************************************************************************************************************************************************************##########*************************************************************************************#######*************************###########**************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++========================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
.....::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................:::-------:::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................            ......................................................................::::-----::::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................::---==============================--::::..............................................:::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::::::::::::::::::::::::::::------:::....................................................................................................................................................................................................................................................................................................................--:...............................................................................................................................................................................................................................................................................................................................................................::::::-----------------------------------------------::::::::::::::::::...........:::::::::::...............::::::::::::::::::::::::----------------::::::::::...........................................             ..................................................................................................................................................................................::::::..........::--=++***########************************++++++++++++++++++********************************############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*****#################################################################################################################################################################################################################################################################################################################################################################################################*******############################**************************************************************************++*****************************************************************************************##############################################################*****************************************************************************************************************************************************************************************************************************************************************************************************##########****************************************************************************************####**************************##########**************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++========================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
......::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................:::-------:::::::::::::::::::::::::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................            ......................................................................::::-----::::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................::---==============================---:::.............................................:::::::::::::::.........:::::::::::::::::::------------------------------------------------------:::::::::::::::::::::---------:::...................................................................................................................................................................................................................................................................................................................--................................................................................................................................................................................................................................................................................................................................................................:::::------------------------------------------------:::::::::::::::::::..........:::::::::::...................:::::::::::::::::::::::::-------------:::::::::..........................................                ...............................................................................................................................................................................::::::..........:::-=++****#####************************+++++++++++++++++++++*******************************##########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*****#################################################################################################################################################################################################################################################################################################################################################################################################*******############################**************************************************************************++*************************************************************************************##################################################################******************************************************************************************************************************************************************************************************************************************************************************************************########*****************************************************************************************##****************************##########**************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................:::-------::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................           .......................................................................::::-----:::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................::---===============================---:::..........................................:::::::----::::.................::::::::::::::::::--------------------------------------------------------::::::::::::-----===----::...................................................................................................................................................................................................................................................................................................................--..............................................................................................................................................................................................................................................................................................................................................................::::::-------------------------------------------------::::::::::::::::::::........::::::::::::.......................:::::::::::::::::::::::::::::::::::::::::::..........................................                ...............................................................................................................................................................................::::::..........:::-==++*****#******************+++++++++++++++++++++++++++++++*****************************#######################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################******################################################################################################################################################################################################################################################################################################################################################################################################********###########################**************************************************************************++***********************************************************************************#####################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************########************************************************************************************************************************########****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
.........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................:::-------::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................           .......................................................................::::-----:::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................::---================================--:::.........................................:::::--------:::......................::::::::::::::::::---------------------------------------------------------::--------=====---::...................................................................................................................................................................................................................................................................................................................--..............................................................................................................................................................................................................................................................................................................................................................::::::-------------------------------------------------::::::::::::::::::::........::::::::::::::........................::::::::::::::::::::::::::::::::::::::::.........................................                  ..............................................................................................................................................................................::::::...........::--=++*****************++++++++++++++++++++++++++++++++++++++*****************************######################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%############################******################################################################################################################################################################################################################################################################################################################################################################################################********###########################**************************************************************************++**********************#*######********************************########***********#######################################################################******************************************************************************************************************************************************************************************************************************************************************************************************#######*************************************************************************************************************************#######****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................::--------::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................           ......................................................................:::::-----::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................:::--================================---:::......................................:::::----------:::...........................:::::::::::::::::--------------------------------------------------------------=======--:::..................................................................................................................................................................................................................................................................................................................--............................................................................................................................................................................................................................................................................................................................................................:::::::--------------------------------------------------::::::::::::::::::::....:::::::::::::::::.............................::::::::::::::::::::::::::::::::::::.........................................      .             ............................................................................................................................................................................:::::::.........::::-==++*************++++++++++++++++++++++++++++++++++++++++++****************************##################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################******################################################################################################################################################################################################################################################################################################################################################################################################********###########################*********************************************************************************************###############****************************###########################################################################################*********************************************************************************************************************************************************************************************************************************************************************************************************##****************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................::--------::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................          .......................................................................:::::-----::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................:::--=================================---:::...................................::::::-----------:::................................::::::::::::::::---------------------------------------------------------========--:::..................................................................................................................................................................................................................................................................................................................--............................................................................................................................................................................................................................................................................................................................................................::::::---------------------------------------------------:::::::::::::::::::::.:::::::::::::::::::...................................:::::::::::::::::::::::::::::.........................................                     ............................................................................................................................................................................::::::::........::::--==++**********+++++++++++++===++++++++++++++++++++++++++++****************************##################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################******################################################################################################################################################################################################################################################################################################################################################################################################********###########################*********************************************************************************************################**************************############################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
.............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::--------:::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................          .......................................................................:::::-----:::::::::...............................................................................................................................................................................................................................................................................................................................................................................:::--=================================---:::..................................:::::-----=====---:::......................................::::::::::::::-----------------------------------------------------========--:::..................................................................................................................................................................................................................................................................................................................--...........................................................................................................................................................................................................................................................................................................................................................::::::----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::...........................................::::::::::::::::::::..........................................                     ............................................................................................................................................................................:::::::::.......::::--===+++******++++++++++++++======++++++++++++++++++++++++++****************************##################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################******################################################################################################################################################################################################################################################################################################################################################################################################*********#########################**********************************************************************************************##################**********************##############################################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
........................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------::::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................          .......................................................................:::::-----::::::...............................................................................::::...............................................................................................................................................................................................................................................................................................:::--==================================---:::................................::::-----=======---::............................................:::::::::::::------------------------------------------------=========--:::.................................................................................................................................................................................................................................................................................................................:--..........................................................................................................................................................................................................................................................................................................................................................::::::-----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::............................................                      ............................................................................................................................................................................:::::::::::....:::::---===+++++++++++++++++++++========+++++++++++++++++++++++++*****************************###############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################******################################################################################################################################################################################################################################################################################################################################################################################################*********#########################**********************************************************************************************######################****************################################################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
.........................:::::--:::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................          ........................................................................:::::-----:::::...............................................................................::::::..............................................................................................................................................................................................................................................................................................:::--===================================--:::...............................::::----=========--:::...............................................::::::::::::::--------------------------------------------=========--:::.................................................................................................................................................................................................................................................................................................................:--..........................................................................................................................................................................................................................................................................................................................................................:::::------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::........................................................................................................                      ............................................................................................................................................................................::::--:::::::::::::------===++++++++++++++++++==========++++++++++++++++++++++++*****************************##############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################******################################################################################################################################################################################################################################################################################################################################################################################################*********#########################**********************************************************************************************######################################################################################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
.........................:::::--:::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................          ........................................................................:::::-----:::::..............................................................................::::::::.............................................................................................................................................................................................................................................................................................:::--===================================---:::.............................::::----==========--:::...................................................:::::::::::::-----------------------------------------=========--:::.................................................................................................................................................................................................................................................................................................................:--.........................................................................................................................................................................................................................................................................................................................................................:::::--------------------------------------------------------::::::::::::::::::::::::::::::::::::::::......................................................................................................                        ............................................................................................................................................................................:::------:::::::::---------====+++++++++++++++==========+++++++++++++++++++++++++****************************#############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################*******################################################################################################################################################################################################################################################################################################################################################################################################*********#######################************************************************************************************************#####################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++=========================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
.........................:::::---::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................          ........................................................................:::::-----:::::.............................................................................::::::::::............................................................................................................................................................................................................................................................................................:::--====================================--:::...........................::::----===========---::........................................................::::::::::::::-------------------------------------=======---::..................................................................................................................................................................................................................................................................................................................:--.........................................................................................................................................................................................................................................................................................................................................................:::::--------------------------------------------------------::::::::::::::::::::::::::::::::::::::::......................................................................................................                        ............................................................................................................................................................................::--------:::::::------------====++++++++++++++=========++++++++++++++++++++++++++***************************############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*******###############################################################################################################################################################################################################################################################################################################################################################################################***********##################****************************************************************************************************#####################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++=========================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
:::......................:::::----:::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................          .........................................................................::::-----:::::.............................................................................::::::::::............................................................................................................................................................................................................................................................................................:::--====================================---:::..........................::::---============--:::............................................................::::::::::::::---------------------------------=======--:::..................................................................................................................................................................................................................................................................................................................:--.........................................................................................................................................................................................................................................................................................................................................................:::::--------------------------------------------------------:::::::::::::::::::..:::::::::::::::::::................................................................................................... ..                 .      ............................................................................................................................................................................::---------:::::--------------=======++++++++===========++++++++++++++++++++++++++***************************############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*******###############################################################################################################################################################################################################################################################################################################################################################################################***********#############*********************************************************************************************************#####################################################################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++=========================================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
::::::..................::::::-----::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................         ..........................................................................::::-----:::::..................................:::::::...................................:::::::::::............................................................................................................................................................................................................................................................................................:::--=====================================--:::........................::::----============---:::...............................................................::::::::::::::::-----------------------------====----:::..................................................................................................................................................................................................................................................................................................................:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::::.....:...:::::::::::::..................................................................................................                            ...........................................................................................................................................................................:::---===----:::----==-----::---==========++++==========++++++++++++++++++===+++++++***************************########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******###############################################################################################################################################################################################################################################################################################################################################################################################************######***************************************************************************************************************###################################################################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#####*********************#######****#*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
::::::::::...........::::::::------::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................         ..........................................................................::::-----:::::.................................::::::::::.................................:::::-:::::............................................................................................................................................................................................................................................................................................:::--=====================================---:::.......................:::----=============--::::...................................................................:::::::::::::::::--------------------------------:::..................................................................................................................................................................................................................................................................................................................:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::::.....:...:::::::::::::..................................................................................................                            ...........................................................................................................................................................................:::---====---------====---::::---==========++===========+++++++++++++++++=====+++++++**************************########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******################################################################################################################################################################################################################################################################################################################################################################################################********************************************************************************************************************************##################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################****#**************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++========================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
::::::::::::::..:::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................         ..........................................................................::::-----:::::.................................:::::::::::...............................:::::---:::::...........................................................................................................................................................................................................................................................................................:::--======================================--:::.....................::::----==============--:::........................................................................:::::::::::::::::::------------------------::::...................................................................................:................................................................................................................................................................................      ..        .       .......................:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::::..........::::::::::....................................................................................................                            ...........................................................................................................................................................................::---=====---------====---:::::--=======================+++++++++++++++++======+++++++*************************###################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************************************************************************************################################################################################################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#*****##############################################******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
-::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::--------::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................         ...........................................................................::::-----:::::.................................:::::::::::::.............................::::----:::::...........................................................................................................................................................................................................................................................................................:::--======================================---:::...................::::----==============---:::..............................................................................:::::::::::::::::::-----------------::::................................................................................:::::::..................................................................................................................................................................                                         ..................:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::::..........::::::::::...................................................................................................                               .........................................................................................................................................................................::---======-------======--:::::---=======================+++++++++++++++========+++++++************************##################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************************************************************************************################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################################***************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++=======================================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
-----::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::--------::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................         ...........................................................................::::-----:::::.................................:::::::::::::::..........................:::::-----::::............................................................................................................................................................................................................................................................................................::---======================================--:::..................::::----===============--:::...................................................................................::::::::::::::::::::::::-:--:::::::.................................................................................:::::::::......................................................................................................................................................  ..                                                  ...............:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::.............:::::::::..................................................................................................                                .........................................................................................................................................................................::---=======-----=======---::::---=======================+++++++++++++++=========++++++************************################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************************************************************************************###############################################################################################################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++=======================================================----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
--------:::::::::::::::::::::-------::::::::::::::.....:::::::::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................         ...........................................................................::::-----:::::.................................::::::::::::::::.........................::::------::::............................................................................................................................................................................................................................................................................................:::--======================================---:::................::::----===============---:::........................................................................................:::::::::::::::::::::::::::::..................................................................................:::::::::..................................................................................................................................................                                                         .   ............:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::..............:::::::...................................................................................................                                ........................................................................................................................................................................:::-----=======--========----:::---========================++++++++++++++==========++++++***********************################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************************************************************************************###############################################################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################################################****************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++=======================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
-----------::::::::::::::::::--------::::::::::::...........::::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................         ...........................................................................::::-----:::::.................................::::::---::::::::.......................:::::-------::::...........................................................................................................................................................................................................................................................................................:::--=======================================--:::...............::::---=================--:::...............................................................................................:::::::::::::::::::::......................................................................................::::::...............................................................................................................................................                           ...........................              .........:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::..............::::::...................................................................................................                                 ........................................................................................................................................................................::---------===============---------========================++++++++++++++===========++++++**********************############################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******#################################################################################################################################################################################################################################################################################################################################################################################################*****************************************************************************************************************************################################################################################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################################################***************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++=======================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
-------------::::::::::::::::--:-----:::::::::::..............::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................         ...........................................................................:::::----:::::.................................:::::------::::::::.....................::::--------::::...........................................................................................................................................................................................................................................................................................:::---======================================---::...............:::----================---:::.........................................................................................................................................................................................................................................................................................................................................................   .                      ............::::::::::::::::::::.......           .  ....:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::...............::::...................................................................................................                                   .......................................................................................................................................................................::----------===============--------========================++++++++++++++============+++++**********************##########################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******##################################################################################################################################################################################################################################################################################################################################################################################################****************************************************************************************************************************################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################################################****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=======================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
-------------------::::::::::::-------::::::::::...............:::::::::::::::::::................................................................................................................................:::-------::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................        .............................................................................:::::-:::::::.................................::::::------::::::::....................::::--------::::...........................................................................................................................................................................................................................................................................................::::--=======================================--:::.............:::----================---:::............................................................................................................................................................................................................................................................................................................:.....................................+- .  ..     .=+.   .-:     ......:..:::::::.:::::::::::::::.........::::....       .  . ..:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::......................................................................................................................                                     .....................................................................................................................................................................::-----------==============-------==============================++++++++=============+++++**********************######################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*******###################################################################################################################################################################################################################################################################################################################################################################################################**************************************************************************************************************************#################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################***************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++=======================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
------------------::::::::::::::------:::::::::.................::::::::::::::::::................................................................................................................................:::-------::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................        .............................................................................::::::::::::...................................:::::--------:::::::...................::::--------::::............................................................................................................................................................................................................................................................................................:::--=======================================---::............:::----=================---:::....................................................................................................................................................................................................................................................................................................=+:....=*....................................+%+           +##*-=+*#*:....:.:::::::::::::::-----------------::::::.....::::...         ..:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::.....................................................................................................................                                     .....................................................................................................................................................................::-----------===============------==============================+++++================+++++**********************####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*******###################################################################################################################################################################################################################################################################################################################################################################################################**************************************************************************************************************************#################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++========================================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
------------------:::::::::::::::-----:::::::::..................:::::::::::::::::................................................................................................................................:::-------::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................        .............................................................................:::::::::::....................................::::::--------::::::::.................::::--------::::............................................................................................................................................................................................................................................................................................:::---=======================================--:::..........:::----=================---:::....................................................................................................................................................................................................................................................................................................*%%#-..:##:..................................-%#-     .    :####*####*-.::::::=+++++=---------------------------------:::::::::....      .:::.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::::....................................................................................................................                                 .   ....................................................................................................................................................................:::-----------=================---====================================================+++++**********************#################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*******####################################################################################################################################################################################################################################################################################################################################################################################################*************##############*********************************************************************************************##################################################################################################################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=======================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::....................................
-------------------:::::::::::::::----::::::::...................:::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................        ..............................................................................:::::::::......................................:::::----------:::::::................:::---------::::.............................................................................................................................................................................................................................................................................................:::--=======================================--::::........::::---==================--:::..........................................................................................................................................................................................................................................................................................*%=.......=#=-**..-#*:..................................*%+.    ==    =**#****##*:..-+++*######+--------------------------------------:::::::...     ::..........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::::....................................................................................................................                            .    .   ....................................................................................................................................................................::------------=========================================================================++++**********************################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*******######################################################################################################################################################################################################################################################################################################################################################################################################*******###################*******************************************************************************************####################################################################################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=======================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------:::::::::::::::::::::::::::::::::::::::::....................................
-------------------::::::::::::::::----:::::::....................::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................        ................................................................................::::::........................................:::::----------:::::::..............::::---------::::.............................................................................................................................................................................................................................................................................................:::--=======================================---:::.......:::----==================---:::.........................................................................................................................................................................................................................................................................................:%*%=...::.+*..-%=.=%*-................................ -%#:    .##.  :***#*-=###+..:+###**=+*##+---=------------------------------------------::.    ::..........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::...................................................................................................................                      ........       ...................................................................................................................................................................:::------:::---=========================================================================++++**********************#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*******#################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************************************************####################################################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++======================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------:::::::::::::::::::::::::::::::::::::::....................................
------------:::::::::::::::::::::::::---::::::....................::::::::::::::::................................................................................................................................::--------::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................        ...........................................................:::::..............................................................:::::------------::::::.............::::---------::::.............................................................................................................................................................................................................................................................................................:::---=======================================--:::......:::----==================---:::..........................................................................................................................................................................................................................................................................................+#.*#-.=##+#=.-+%+.=#+-..............:..................*#+     +##=::=*###+.*###=:--+###*=-+#*#+-=***=-----------------------------------------=-:....:..........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::...................................................................................................................                     ..........      ...................................................................................................................................................................:::------:::---=========================================================================+++++*********************###########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################********################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************************************+**********#####################################################################################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************###**************************************###########################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------:::::::::::::::::::::::::::::::::::::....................................
::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::::::::.................................................................................................................................::--------::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................         ..........................................................::::::::.............................................................:::::------------::::::............::::---------::::..............................................................................................................................................................................................................................................................................................:::--=======================================---:::...::::----===================--:::.......................................................................................................................................................................................................................................................................................=#%#%#.:##+###%#==%#%+.=#=-............-:..........::..... =##+:--=+*#***+**#****#####*+=+##*****#*#+=*#*#*=-----------------------------------------===-..:..........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::..................................................................................................................                     ............ .   ...................................................................................................................................................................:::------::::---========================================================================+++++*********************#######################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################********################################################################################################################################################################################################################################################################################################################################################################################################################################****************************************************************************************#######################################################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************#####*****************************#***################################################################################################################**************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------:::::::::::::::::::::::::::::::::::::...................................
::::::::::::::::::::::::::::::::::::::::::::::.....................::::::::::::::................................................................................................................................:::--------::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................         .........................................................:::::::::.............................................................:::::-------------::::::...........::::---------::::..............................................................................................................................................................................................................................................................................................:::--=======================================---::::::::::---===================---:::.......................................................................................................................................................................................................................................................................*%-............+%*-=%%-=#%%%%%%%%%#+%+.+*=-.........:-=:.........:--:....:=############**##*#########*#*#**###*##*##+***#*#*-------------------------------------------=+==:... ......................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::..................................................................................................................                     ..............   ...................................................................................................................................................................:::------::::---=======================================================================++++++*********************######################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*********################################################################################################################################################################################################################################################################################################################################################################################################################################***************************************************************************************########################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************#######*************************#######################################################################################################################**************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------===============-----------::::::::::::::::::::::::::::::::::::...................................
::::::::::::::::::::::::::::::::::::::::::::::.....................:::::::::::::.................................................................................................................................:::-------:::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................         ........................................................:::::::::::.............................................................:::::-------------::::::..........::::---------::::..............................................................................................................................................................................................................................................................................................:::---=======================================---:::::::----===================---:::.......................................................................................................................................................................................................................................................................:%%#...........-%=...%%#%%%%%%%%%%%%%%#+*+--...::...-=-.........:--:....-*#########################################*****#*###=--------------------------------------------==+=:. ......................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................                       .............     ..................................................................................................................................................................:::------::::---=======================================================================++++++********************##################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################********################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************************************************************##########################################################################################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************#######********************#############################################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------=====================-----------::::::::::::::::::::::::::::::::::....................................
:::::::::::::::::::::::::::::::::::::::::::::.......................::::::::::::.................................................................................................................................:::-------:::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................         ........................................................::::::::::::............................................................:::::--------------::::::.........:::-----------:::...............................................................................................................................................................................................................................................................................................:::--=======================================---::::::----===================---:::....................................................................................................................................................................................................................................................................-==:=###:..........*#:..-#%%%%%%%%%%%%%%%%%%%*=-..-=**++*=........:--:....=#%%%#######################################**#**##*###=-----------------------------------------------===:......................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................                      ..............     ..................................................................................................................................................................::-------::::---=======================================================================+++++*********************#################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################****+****################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************************************************************##########################################################################################################################################************************************************************************************************************************************************************************************************************************************************************************************************************#########********************############################################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------========================----------:::::::::::::::::::::::::::::::::....................................
..................:::::::::::::::::::::::::::........................::::::::::..................................................................................................................................:::-------::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................::........         .......................................................::::::--:::::.............................................................:::::--------------:::::........::::-----------::::..............................................................................................................................................................................................................................................................................................:::--========================================---::::----====================--::::...............................................................................................................................................................................................................................................................:.::*###*####:...::-::-=%*--=*%%%%%%%%%%%%%%%%%%%%%%#+==-=**+**=:..:-+=-:....-*%%%%%########################################*#*#######+---=--------------------------------------------==++=-::.................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................                      ...............    ..................................................................................................................................................................::-------:::::--=======================================================================+++++*********************################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################****+****################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************************############################################################################################################################################************************************************************************************************************************************************************************************************************************************************************************************************************##########*****************###############################################################################################################################**************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------==================================---------:::::::::::::::::::::::::::::::::....................................
............................:::::::::::::::::.........................::::::::...................................................................................................................................:::-------:::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................:..::........         .......................................................:::::----:::::............................................................:::::--------------::::::.......::::-----------::::..............................................................................................................................................................................................................................................................................................:::---=======================================----------====================---:::..............................................................................................................................................................................................................................................................+%%%%%#-.:*####-:--=+*++=+%++*#%%%%%%%%%%%%%%%%%%%%%%%%%#+-:+*=-+#***##*=...:-=#%%%%%%%%%%%%%%%%################################*#######+==+++--------------------------------------====++++++++++==-:............................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................                      ...............    ..................................................................................................................................................................::-------:::::--======================================================================++++++*********************################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################****++***################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************************############################################################################################################################################************************************************************************************************************************************************************************************************************************************************************************************************************###########**************#################################################################################################################################**************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++====================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------========================================---------::::::::::::::::::::::::::::::::....................................
..................................:::::::::::...........................::::.....................................................................................................................................:::-------:::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................:.:::........        .......................................................:::::------::::.............................................................:::::--------------::::::......::::-----------::::...............................................................................................................................................................................................................................................................................................:::--========================================--------====================---:::..............................................................................................................................................................................................................................................................-%+.:*#%%*#%%%%#===+*#%%%##%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++*+--+##+=-::--===#%%%%%%%%%%%%%%%%%########################################+--==+=----------------------------------==+++++++++++===+++++=-:.........................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................                      ......::.......    .................................................................................................................................................................:::-------:::::--=====================================================================+++++++*********************#######################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################****++***#################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################************************************************************************************************************************************************************************************************************************************************************************************************************###########***********####################################################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------==========================================----------:::::::::::::::::::::::::::::::....................................
......................................::::::.....................................................................................................................................................................:::-------:::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................:::::........        .......................................................:::::------:::::............................................................:::::---------------::::::.....::::-----------::::...............................................................................................................................................................................................................................................................................................:::--==========================================----=====================---:::...............................................................................................................................................................................................................................................................+%-.=+.:*%*-#%%%*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*=--**---======#%%%%%%%%%%%%%#############################################*=---++--------------------------------==++++++===================-::.....................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................                      .....:::........   .................................................................................................................................................................:::-------:::::---====================================================================++++++**********************####################################################################%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################****++***#################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################***********************************************************************************************************************************************************************************************************************************************************************************************************#############****###########################################################################################################################################**************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++====================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------=============================================-=----------::::::::::::::::::::::::::::::....................................
.................................................................................................................................................................................................................:::------:::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................:::::.......         .......................................................:::::-------::::.............................................................:::::---------------::::::...:::::-----------::::...............................................................................................................................................................................................................................................................................................:::---==================================================================--:::........................................................................................................................................................................................................................................................:::.....+#-:=:...+-.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%*=*#======--+%%%%%%%%%%%%###############################################**+=-=+=-----------------------------==+++=====-=====================--:::................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................                     ......::::.......   .................................................................................................................................................................:::-------:::::---===================================================================+++++++**********************###################################################################%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################****++***#################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************************###########################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++====================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------=====================================================--------:::::::::::::::::::::::::::::::...................................
.................................................................................................................................................................................................................:::------::::::::::::::::::::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................:::::.......         .......................................................:::::--------::::............................................................:::::----------------::::::.::::::-----------::::................................................................................................................................................................................................................................................................................................:::--=================================================================--::::.......................................................................................................................................................................................................................................................=#%#+-:..+%::-...:-*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+--==---#%%%%%%%%#%###############%###############################*****+=-=+----------------------------==++===-==============================-::.............................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................                     ......::::........  .................................................................................................................................................................:::-------:::::---==================================================================+++++++**********************####################################################################%%%%%%%%%#%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################***+++***#################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************************###########################################################################################################################################*********************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################***************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++===================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------==-=========================================================--------:::::::::::::::::::::::::::::::...................................
.................................................................................................................................................................................................................:::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................:::::::.......         .......................................................:::::--------::::.............................................................:::::----------------::::::::::::-----------::::................................................................................................................................................................................................................................................................................................:::---===============================================================---:::.......................................................................................................................................................................................................................................................-%#**#%%+:+#-:::-+#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+:-----*%%%%%%%###################%%%%%##########################********+-+=--------------------------=+++==---=======--========================-::..........................................................................................................................................................................................................................................................................................................................:::----------------------------------------------------------::::::::::::::::::::...............................................................................................................                     .....:::::......     ................................................................................................................................................................::---==---::::::--===============-----============================================+++++++************************#####################################################################%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################***+++***##################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************###########################################################################################################################################******************************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################****************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++===================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------==================================================================---------:::::::::::::::::::::::::::::::..................................
.................................................................................................................................................................................................................:::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................:::::::.......         .......................................................:::::--------:::::.............................................................:::::---------------::::::::::::-----------::::..........:::....................................................................................................................................................................................................................................................................................:::---=============================================================---:::........................................................................................................................................................................................................................................................=#:...-*%%#%-:=*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#=::--*%%%%%##%####################%%%%%#########################****++**+====------------------------=++==----====-----------======================-:........................................................................................................................................................................................................................................................................................................................:::----------------------------------------------------------::::::::::::::::::::...............................................................................................................                     .....:::::......     ................................................................................................................................................................::---=----::::::--==============------=======================================+++++++++++*************************#####################################################################%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################***+++***##################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************###########################################################################################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################***************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++===================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------========================================================================--------:::::::::::::::::::::::::::::::..................................
.................................................................................................................................................................................................................::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................:::::::.......         .......................................................:::::---------::::.............................................................:::::----------------:::::::::::-----------::::.........:::::...................................................................................................................................................................................................................................................................................:::---============================================================---:::.................................................................................................................................:.......................................................................................................................+#:.....:=#%*#%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+*%%%%%%#######################%%%%%%#######################****++++++++======-------------------=++=------==------------------===================-:......................................................................................................................................................................................................................................................................................................................:::----------------------------------------------------------::::::::::::::::::::...............................................................................................................                     .....:::::......     ................................................................................................................................................................::---=----::::::--==============-------===================================++++++++++++***************************#####################################################################%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################***+++***##################################################################################################################################################################################################################################################################################################################################################################################################################################***************************************************************************+++*****############################################################################################################################################***********************************************************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++===================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------=============================================================================-------:::::::::::::::::::::::::::::::..................................
................................................................................................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................:::::::.......         .......................................................:::::---------::::..............................................................:::::----------------:::::::::::----------:::::........:::::....................................................................................................................................................................................................................................................................................:::---==========================================================---:::.................................................................................................................................-:...................................................................................................................:=+*#%+--:....*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################***+++++++++++++=====---------------=++=------------------------------================+=-:...................................................................................................................................................................................................................................................................................................................::::----------------------------------------------------------:::::::::::::::::::................................................................................................................                     .....:::::.....      ................................................................................................................................................................::--==---:::::::---============--------================================++++++++++++++*********#######***********######################################################################%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################***+++***##################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************************************************++++****#############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++====================================================-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------=================================================================================-------::::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................::::::::.......         .......................................................:::::---------::::..............................................................::::::----------------::::::::::----------:::::.......::::::.....................................................................................................................................................................................................................................................................................:::--=========================================================---:::.................................................................................................................................:=:...................................................................................................................-#+++##**+=:-*%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%######%%%%%####################################################**++++++++++++++++++==-------------=++=----------------------------------===============+=-:.................................................................................................................................................................................................................................................................................................................::::----------------------------------------------------------::::::::::::::::...................................................................................................................                     .....:::::.....      ................................................................................................................................................................::--==---:::::::---============-------=====+++=======================++++++++++++*********###############******########################################################################%###%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################***+++***###################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************+++++*****############################################################################################################################################***********************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################****************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++====================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------=========================================================================================-------::::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................::::::::.......         ........................................................::::---------::::...............................................................:::::----------------:::::::::-----------:::::.......:::::::....................................................................................................................................................................................................................................................................................:::---=======================================================---:::..................................................................................................................................:-....................................................................................................................=*:..+#=--=*#%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%##########%%##################################################*##**+++++++++++++++==++=------------=++=-------------------====---------------===============-:................................................................................................................................................................................................................................................................................................................::::----------------------------------------------------------::::::::::::::::...................................................................................................................                     .....:::::.....      ...............................................................................................................................................................:::--==---:::::::---============-------===+++++++=================++++++++++++***********#########################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################***+++***###################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************++++++*****############################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************************#########################################################################################################################################################################################*****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++====================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------==============================================================================================------::::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................:::::::::.......         ........................................................::::---------::::................................................................:::::----------------:::::::::----------:::::.......:::::::.....................................................................................................................................................................................................................................................................................:::--======================================================---:::...................................................................................................................................::....................................................................................................................-#:..+%#=-*%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################***#**++++++++++++++=--=+=-----------==+=--------------------====---------------================-:...............................................................................................................................................................................................................................................................................................................::::----------------------------------------------------------::::::::::::::::................:..................................................................................................                    .....::::::.....      ...............................................................................................................................................................:::--==----::::::----===========------==++++++++++=============+++++++++++**********##############################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################***+++***###################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************++++++*****############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++====================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=======================================================================================================------::::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................:::::::::......          ........................................................::::---------::::................................................................:::::-----------------::::::::----------:::::.......:::::::.....................................................................................................................................................................................................................................................................................::::--====================================================---:::......................................................................................................................................................................................................................................................:-::=#=..-%#=*%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*#######################################****#**++++++++++++++=--=+=-----------=+=---------------------------------------==================-:..............................................................................................................................................................................................................................................................................................................::::----------------------------------------------------------::::::::::::::::................:..................................................................................................                    .....::::::.....      ...............................................................................................................................................................:::--==----::::::----============----==++++++++++++==========++++++++++**********#################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################***+++***###################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************+**++*****############################################################################################################################################************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------==============================================================================================================------::::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................:::::::::......           .......................................................::::---------::::.................................................................:::::-----------------::::::-----------:::::......:::::::::.....................................................................................................................................................................................................................................................................................:::---======+===========================================---:::.......................................................................................................................................................................................................................................................+%###%=..:#*#%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################*###########################################**#****++++++++++++++=-==+=-----------++----------------------------====----------==----============:.............................................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::...................................................................................................................                    .....::::::.....       ..............................................................................................................................................................:::--==----::::::-----===========--===+++*****++++++++=+++++++++++++**********#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################***+++***###################################################################################################################################################################################################################################################################################################################################################################################################################################*************************************************************************+++******############################################################################################################################################***********************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++===================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------================================================================================================================-------:::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................:::::::::......           .......................................................::::---------::::.................................................................:::::-----------------::::::-----------:::::......::::::::.......................................................................................................................................................................................................................................................................................:::---===============================================----:::........................................................................................................................................................................................................................................................=%#===:..:#%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################*********########################*******+++++++++++++++==+==----------=+=========--------------------======----------------===========--:..........................................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::...................................................................................................................                    .....::::::.....       ..............................................................................................................................................................::---===---::::::-----===============+++********+++++++++++++++++*********#########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################**++++***###################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************************************************############################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################*****************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++====================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------==================================================================================================================-------:::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................:::::::::......           .......................................................:::::-------::::...................................................................:::::-----------------:::::------------::::......::::::::........................................................................................................................................................................................................................................................................................:::--=======+===+==================================---::::.........................................................................................................................................................................................................................................................:=%+:.:..+%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################************#####################*******+++++++++++=+++==+=---------==+==============------------------========-------------============--.........................................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::...................................................................................................................                    .....::::::.....       ..............................................................................................................................................................::---===----:::::-----==============+++**********++++++++++++*********#############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################**++++***###################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************************************************############################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################################################################*****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------====================================================================================================================--------::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................::::::::::......           .......................................................:::::-------::::...................................................................::::::-----------------:::-------------::::......::::::::........................................................................................................................................................................................................................................................................................:::---======+++++++++=============================---::::............................................................................................................................................................................................................................................................-##-.:+%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*##############*######************######################******+++++++++++=++++==------======+===============-------------------========------------=============-:.....  ................................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::...........:::.....................................................................................................                    .....::::::.....       ..............................................................................................................................................................::---====--------------=============+++************+++++++*********###############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################**++++***##################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################################################################******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------======================================================================================================================--------:::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................::::::::::......          ........................................................:::::-------::::....................................................................:::::------------------::-------------::::......::::::::.........................................................................................................................................................................................................................................................................................:::---======++++++++============================---:::...............................................................................................................................................................................................................................................................:*#++%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%##*-*#######***###**************###############*****#******+++++++++++++++++------======+===================-------------------------------------========-----=-:.  . ..... ..........................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::..........::::::...................................................................................................                    .....::::::.....       ..............................................................................................................................................................::--======-------------=============++**************************##################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################**++++***##################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************************############################################################################################################################################****************************************************************************************************************************************************************************************************************************************************************##########################################################################################################################################################################################################*****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------========================================================================================================================--------:::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................::::::::::......          .........................................................::::-------::::....................................................................::::::--------------------------------:::::.....:::::::::........................................................................................................................................................................................................................................................................................::::--======++++++++==========================----:::.........     ....................................................................................................................................................................................................................................................+%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################*#####=-+######**********************####******#***************++++++++++++=++++=---========+===================-------------------------------------========---------.       ............................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------::::::::::::::::......:.:::::::...................................................................................................                    .....::::::.....      ..............................................................................................................................................................:::--======-------------=============++************************####################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################**++++***###################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################***************************************************************************************************************************************************************************************************************************************************************###########################################################################################################################################################################################################*****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----====================================================================================================================================--------::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................:::::::::::......         ..........................................................::::-------::::.....................................................................:::::--------------------------------:::::.....:::::::::.......................................................................................::::..............................................................................................................................................................................................::::--======+++++++=========================---::::........      .....................................................................................................................................................................................................................................................=%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*=--=#######**********************####*********************++++++++++++==+++============+===================------------------------=-------------=====------------:.          .......................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------::::::::::::::::......:::::::::::.................................................................................................                    .....::::::.....      ..............................................................................................................................................................:::--=======-----------==============+++********##********#########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################***++****###################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################***************************************************************************************************************************************************************************************************************************************************************###########################################################################################################################################################################################################******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=======================================================================================================================================--------:::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................:::::::::::......         ..........................................................::::-------::::.....................................................................::::::-------------------------------:::::....::::::::::......................................................................................:::::...............................................................................................................................................................................................:::---======++++++========================---::::........     ......................................................................................................................................................................................................................................................-#%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%#+----=#######***********************####*****##*************+++++++++++++=+=++==========+===================-----------------------====--=---------=====--------------.          ......................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------::::::::::::::::......:::::::::::.................................................................................................                    .....::::::.....      ..............................................................................................................................................................::---========----------==============+++*****######################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################****+***####################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------==========================================================================================================================================--------::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................:::::::::::......         ..........................................................:::::-------::::....................................................................::::::------------------------------::::::....::::::::::.....................................................................................::::::................................................................................................................................................................................................:::---=====++++++++====================----::::........       ....................................................................................................................................................................................................................................................:#%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################+-----=#######************************######*************#***+++++++++++++++==+==========+======================--------------------========---------===----------------:.           ...................................................................................................................................................................................................................................................................................::::----------------------------------------------------------::::::::::::::::::....::::::::::::.................................................................................................                    .....::::::......     .............................................................................................................................................................:::---==========------=================++****#######################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################********####################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################******************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------=====+======================================================================================================================================--------:::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................:::::::::::.....          ...........................................................::::-------::::...................................................................:::::::------------------------------::::::....::::::::::....................................................................................:::::::................................................................................................................................................................................................::::--=====++++++++==================----::::........         ..............................................................................................................................................................................................................................................:---::+%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################*------=#######***********************#########***************+++++++++++++++===+=================================--------------------=======--=-------=-------------------:         . ..................................................................................................................................................................................................................................................................................::::----------------------------------------------------------::::::::::::::::::....::::::::::::.................................................................................................                    .....::::::.....      ............................................................................................................................................................::::--==============================-===++****#######################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################********####################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------=====+++======================================================================================================================================-------:::::::::::::::::::::::::.................................
................................................................................................................................................................................................................::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................::::::::::......          ...........................................................::::-------::::............................................................:::::::::::::::-----------------------------::::::...:::::::::::...................................................................................::::::::.................................................................................................................................................................................................:::---====++++++++=================----:::........           .........................................................................................................................................................................................................................................:-=+##%%%##%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################=-----=#######*********************#############*************+++++++++++++++===+==================================------------------------=---=----------------------------:.           ................................................................................................................................................................................................................................................................................::::----------------------------------------------------------::::::::::::::::::....::::::::::::.................................................................................................                     ....::::::.....      ............................................................................................................................................................:::---=============================----==++**########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################*******####################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************#############################################################################################################################################************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################*******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==========+++++=======================================================================================================================================-------::::::::::::::::::::::::.................................
...............................................................................................................................................................................................................:::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................:::::::::::......         .............................................................::::------:::::..........................................................::::::::::::::::-----------------------------::::::..:::::::::::...................................................................................:::::::::.................................................................................................................................................................................................:::---====++++++++===============----::::........           .........................................................................................................................................................................................................................................-+*#%%%%@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%#%#+-----*#######*********************##############***********++++++++++++++++=======================================----------------------------------------------------------:           ...............................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::.................................................................................................                     ....::::::.....      ............................................................................................................................................................:::---=============================----==++**########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%####################################################################################*****#####################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************************############################################################################################################################################************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################*******************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---========++++++++=========================================================================================================================================-----::::::::::::::::::::::::.................................
...............................................................................................................................................................................................................::::-------:::::::::::::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................:::::::::::......         .............................................................:::::------::::.........................................................:::::::::::::::::-----------------------------:::::::.:::::::::::..................................................................................::::::::::................................................................................................................................................................................................::::---====+++++++===============----:::........             .....................................................................................................................................................................................................................:..................==+%%%%%%%@%@@@%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%#****########********************###*****######************++++++++++++++++==========================================--------------------------------------------------------:.          ..............................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::................................................................................................                      ....::::::.....      ...........................................................................................................................................................:::---==============================-----=++**########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################****#####################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************************************+*************############################################################################################################################################************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++++++++++++==========================================================================================================================================----::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------:::::::::::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................::::::::::::.....          ..............................................................:::::-----:::::.......................................................:::::::::::::::::------------------------------::::::::::::::::::::.................................................................................::::::::::...............................................................................................................................................................................................::::---=====+++++++==============---::::........             ......................................................................................................................................................................................................................:.................*#+#%%%%%%%%%%%%%%%%@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*###**********************************************++++++++++++++++===========================================---------------------------------------------------------.           ............................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::................................................................................................                      ....::::::.....      ...........................................................................................................................................................:::---==============================-----=++**########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************************+++************############################################################################################################################################*************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=+++++++++++++++===========================================================================================================================================-----:::::::::::::::::::::::.................................
................................................................................................................................................................................................................::::---::::::::::::..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................:::::::::::::.....          ..............................................................::::::----:::::.......................................................:::::::::::::::::------------------------------::::::::::::::::::::................................................................................:::::::::::..............................................................................................................................................................................................::::---=====++++++++=============---::::........              ......................................................................................................................................................................................................................:................+@%#%%%%%%%%%%%%%%%%@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################**********************************************++++++++++++++++============================================---------------------------------------------------------:           ...........................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::................................................................................................                      .....::::......      ..........................................................................................................................................................:::----==============================-----==+**#########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################################################################################################################################################################################################************###########################################################################################################################********************************************************************++++************############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==+++**++++++++++===========================================================================================================================================-----:::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::::::::::::::::...............::::::::..::.......:.......................................:::::::::::::::::::::........................................................................................::::::::::::::.....          ...............................................................::::::--::::::.......................................................::::::::::::::::-------------------------------::::::::::::::::::::................................................................................::::::::::.............................................................................................................................................................................................:::::---====++++++++++============---::::.......               .......................................................................................................................................................................................................................................-%%%%%%%%%%%%%%%%%%%@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*########**********************************************++++++++++++++++===+=========================================----------------------------------------------------------.          ..........................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::................................................................................................                      .....::::......      ..........................................................................................................................................................:::---==============================------==+***########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################################################################################################################****************###########################################################################################################################*******************************************************************++++++************###########################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++=======================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++****+++++++=============================================================================================================================================----:::::::::::::::::::::::.................................
.................................................................................................................................................................................................................:::::::::::::...............................................................................:::::::::::::::::::........................................................................................::::::::::::::.....          ................................................................::::::::::::::.......................................................:::::::------:-------------------------------:::::::::::::::::::::...............................................................................:::::::::::...........................................................................................................................................................................................:::::---=====+++++++++++===========---:::........               ........................................................................................................................................................................................................................................#%%%%%%%%%%%%%%%%%%@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################**********************************************++++++++++++++++================================================--------------------------------------------------------:        .  ........................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::..............................................................................................                        .....:::.......     ...........................................................................................................................................................:::---==============================-------=++***######################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################*****#********************##########################################################################################################################*******************************************************************++++++************############################################################################################################################################*************************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****+++++++=============================================================================================================================================----::::::::::::::::::::::..................................
...............................................................................:...................................................................................................................................::::::::....................................................................................::::::::::::::::.........................................................................................::::::::::::::.....          .................................................................:::::::::::::.......................................................:::::::--------------------------------------:::::::::::::::::::::..............................................................................::::::::::::..........................................................................................................................................................................................::::----====+++++++++++++===========--:::.......                ........................................................................................................................................................................................................................................+%%%%%%%%%%%%%%%%%%@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**********************************************++++++++++++++++================================================---------------------------------------------------------:           .......................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::..............................................................................................                        ......::.......     ..........................................................................................................................................................:::----==============================-------=++***######################################################*****###########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################****************************###########################################################################################################################******************************************************************++++++************############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****++++++==============================================================================================================================================----::::::::::::::::::::::..................................
...............................................................................:................................................................................................................................................................................................................................::::::::::::::..........................................................................................::::::::::::::.....         ...................................................................:::::::::::::.......................................................:::::::------------------------------------::::::::::::::::::::::..............................................................................:::::--:::::.............................................................:...........................................................................................................................::::---====+++++++++++++============--:::........               .......................................................................................................................................................................................................................................:+%%%%*#%%%%%%%%%%%%@@%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############**********************************************++++++===++++++===================================================---------------------------------------------------------.           .....................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::..............................................................................................                        .......:.......     ..........................................................................................................................................................:::---===============================-------=++*****##############################################**************########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################******************************###########################################################################################################################******************************************************************++++++************############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################*########################***********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++=======================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****++++++==============================================================================================================================================----::::::::::::::::::::::..................................
.................................................................................:...............................................................................................................................................................................................................................::::::::::::..........................................................................................:::::::::::::::.....         ....................................................................:::::::::::.........................................................:::::::-----------------------------------::::::::::::::::::::::..............................................................................::::---:::::............................................................::.........................................................................................................................::::---====++++++++++++++============---::.......                 ......................................................................................................................................................................................................................................=%%%%%*+%%%%%%%%%%%%%@%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*******************************************++=++==============+==================================================-------------------------------------------------------.           ....................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....:::::::::::..............................................................................................                         ..............      ..........................................................................................................................................................:::---===============================------==++********#######################################********************######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################*******************************###########################################################################################################################******************************************************************+++++++***********############################################################################################################################################****************************************************************************************************************************************************************######****************************************************************************************###############################################################################################################################################################################*****#######################************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****++++++==============================================================================================================================================----::::::::::::::::::::::..................................
.................................................................................::...............................................................................................................................................................................................................................:::::::::...........................................................................................::::::::::::::::.....        .......................................................................::::::::...........................................................::::::::--------------------------------:::::::::::::::::::::::.............................................................................:::::----::::............................................................::........................................................................................................................::::---===+++++++++++++++=============--:::......                 ......................................................................................................................................................................................................................................+%%%%%%*#%%%%%%%%%%%@@%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%######******************************************++=================+====================================================------------------------------------------------------.           ...................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::..............................................................................................                          ..............      ..........................................................................................................................................................:::---===============================------==++************#################################**********************#####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################*********************************##########################################################################################################################******************************************************************+++++++***********############################################################################################################################################*************************************************************************************************************************************************************###########**************************************************************************************##############################################################################################################################################################################******######################*************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++***++++++===============================================================================================================================================-----:::::::::::::::::::::..................................
..................................................................................::.................................................................................................................................................................................................................................:::.............................................................................................:::::::::::::::::.....        ...........................................................................................................................................::::::::------------------------------::::::::::::::::::::::::............................................................................:::::-----::::............................................................::......................................................................................................................::::---====+++++++++++++++=============---::......                  .....................................................................................................................................................................................................::..............................=%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%#########****************************************++======================+++==============================================------------------------------------------------------:           ..................................................................................................................................................................................................................................................................::::-----------------------------------------------------------::::::::::::::::.....::::::::::..............................................................................................                          ..............      ..........................................................................................................................................................::---================================------==+***************#############################*************************###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################*********************************##########################################################################################################################******************************************************************++++++++*********#############################################################################################################################################*********************************************************************************************************************************************************###############**************************************************************************************############################################################################################################################################################################*********####################***************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++**+++++++===============================================================================================================================================-----:::::::::::::::::::::..................................
...................................................................................:::..............................................................................................................................................................................................................................................................................................................................::::::::::::::::::.....       ..............................................................................................................................................::::::::---------------------------::::::::::::::::::::::::.............................................................................::::------::::............................................................::......................................:::............................................................................::::---===++++++++++++++++==============--:::.....                  ......................................................................................................................................................................................................==............................:=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*************************************++========================+===============================================------------------------------------------------------:            ................................................................................................................................................................................................................................................................::::-----------------------------------------------------------::::::::::::::::....:::::::::::..............................................................................................                           ............       ..........................................................................................................................................................::---================================------=++*****************###########################*************************###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################################################################################################################################################################################################*********************************##########################################################################################################################******************************************************************++++++++*********##############################################################################################################################################*****************************************************************************************************************************************************##################***************************************************************************************##########################################################################################################################################################################**********###################****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++++++++++================================================================================================================================================-----:::::::::::::::::::::..................................
....................................................................................:::.............................................................................................................................................................................................................................................................................................................................::::::::::::::::::.....       ...............................................................................................................................................:::::::::------------------------:::::::::::::::::::::::::.............................................................................::::------::::............................................................::.....................................::::...........................................................................::::---===++++++++++++++++===============--::.....                   ...............................................................................................................................................................................:-==-:.................--...........................:=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############************************************+==========================================================================------------------------------------------------------:            ...............................................................................................................................................................................................................................................................::::-----------------------------------------------------------::::::::::::::::....:::::::::::.............................................................................................                            ............       ..........................................................................................................................................................::---================================-----==+++*****************##########################**************************#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################################################################################################################################################################################################################################################*********************************##########################################################################################################################*****************************************************************+++++++++********###############################################################################################################################################*************************************************************************************************************************************************#######################**************************************************************************************#########################################################################################################################################################################***********##################*****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++++++=================================================================================================================================================-----:::::::::::::::::::::..................................
.....................................................................................:::..........................................................................................................................................................................................................................................................................................................................::::::::::::::::::::.....      .................................................................................................................................................::::::::::---------------------::::::::::::::::::::::::::............................................................................:::::-----:::::...........................................................:::....................................:::::.........................................................................::::---===++++++++++++++++======---=======---::.....                  ...............................................................................................................................................................................=#%%%%#+:...........................................:=+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*********************************++===========================================================================------------------------------------------------------:            ..............................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::.:::::::...........................................................................................                              ............  ..  ...........................................................................................................................................................::---================================-----==+++******************#########################*************************###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************+++++++++*******################################################################################################################################################********************************************************************************************************************************************############################***************************************************************************************##########################################################################################################################################################################*********#################********************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++=======================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==+++++++++++=================================================================================================================================================-----::::::::::::::::::::::.................................
.....................................................................................:::::.......................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::.....      ...................................................................................................................................................:::::::::::----------------::::::::::::::::::::::::::::............................................................................::::------:::::...........................................................:::....................................:::::........................................................................::::---===++++++++++++++++====------=======---::.....                  .............................................................................................................................................................................:*%@@@@@@@%*=-.........................................-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############********************************++==========================++++++==+=++=====================================-------------------------------------------------------:           ..............................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::..........................................................................................                               ...........    .  ...........................................................................................................................................................::---================================------==++******************##########################************************###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************+++++++++******#################################################################################################################################################****************************************************************************************************************************************################################***************************************************************************************####################################################################################################################################################################*****************########***************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===+++++++++++=================================================================================================================================================-----::::::::::::::::::::::.................................
......................................................................................:::::....................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::.....     ......................................................................................................................................................::::::::::::::---------:::::::::....:::::::::::::::::...........................................................................:::::------::::...........................................................::::...................................::::::.......................................................................::::---===++++++++++++++++====-------=======---::....                   .............................................................................................................................................................................=@@@@@%%%@@@@%*+-:.....................................-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%############******************************++=================================+=+++++++=================================--------------------------------------------------------:           .............................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::..........................................................................................                               ...........        ..........................................................................................................................................................::---================================------==+++*****************##########################************************####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************+++++++++*****##################################################################################################################################################*************************************************************************************************************************************###################################***************************************************************************************################################################################################################################################################################********************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++++++==================================================================================================================================================-----::::::::::::::::::::::.................................
.......................................................................................::::::.................................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::.....  ...........................................................................................................................................................::::::::::::::--:--::::::::::.....:::::::::::::::::...........................................................................:::::------::::..........................................................:::::......................::::.........::::::.....................................................................::::---===+++++++++++++++++===---------========--::....                  .............................................................................................................................................................................:#@%%%%%%%%%%@@@@%#=-...................................+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############****************************+============================+====++=+=++====================================---------------------------------------------------------:            ...........................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....:::::::::..........................................................................................                                ...........        ..........................................................................................................................................................::---=================================-----===++++**************############################***********************####################################################################################################%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************+++++++++*****###################################################################################################################################################*********************************************************************************************************************************######################################***************************************************************************************###########################################################################################################################################################**************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++++++==================================================================================================================================================-----::::::::::::::::::::::.................................
........................................................................................::::::................................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::..... ..............................................................................................................................................................:::::::::::::::::::::::::.......::::::::::::::::::..........................................................................::::-------::::..........................................................::::......................::::::.......:::::::....................................................................::::---===++++++++++++++++===----::::---========--::....                  .............................................................................................................................................................................-%@@%%%%%%%%%%%@@@@@%*-:................................#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############************************++=+=========================+===+==========================================------------------------------------------------------------:            ..........................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::...........................................................................................                                ...........        ..........................................................................................................................................................::---=================================-----====++++*************############################************************####################################################################################################%%%%%%%%%%%%%%#################################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************++++++++++****###################################################################################################################################################******************************************************************************************************************************#########################################***************************************************************************************########################################################################################################################################################******************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++++++++===================================================================================================================================================-----::::::::::::::::::::::.................................
........................................................................................:::::::...............................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::..... .................................................................................................................................................................:::::::::::::::::::::........::::::::::::::::::.........................................................................:::::-------::::.........................................................:::::....................::::::::......::::::::...................................................................::::--====++++++++++++++++===---::::::---========--::....                  .............................................................................................................................................................................-@@%%%@%%%%%%%%%%%@@@@%#+=:............................=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***********************++=+================================+===-=-================================--------------------------------------------------------------:             ........................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::...........................................................................................                                ...........       ...........................................................................................................................................................::---==================================----=====++++************#############################***********************########################################################################################################%%%%%#%####################################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************++++++++++****###################################################################################################################################################**********************************************************************************************************************#################################################***************************************************************************************###################################################################################################################################################***********************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++++====================================================================================================================================================-----::::::::::::::::::::::.................................
.........................................................................................:::::::.............................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::..........................................................................................................................................................................:::::::::::::::::........:::::::::::::::::::.........................................................................:::::------:::::.........................................................:::::...................:::::::::.....:::::::::..................................................................:::---===++++++++++++++++===---:::::::::--========--::....                  .............................................................................................................................................................................-%@%%%%%%%%%%%%%%%%%@@@@@@#=........................::+%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**********************+++===========================++======-----============================------------------------------------------------------------------:            ........................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::......................................................................................... ..                               ..........        ...........................................................................................................................................................::---====================================--======++++***********#############################***********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************++++++++++****###################################################################################################################################################**********************************************************************************************************############################################################****************************************************************************************#################################################################################################################################################*************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++++++++====================================================================================================================================================-----::::::::::::::::::::::.................................
..........................................................................................::::::::..........................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::::............................................................................................................................................................................:::::::::::::..........:::::::::::::::::::.........................................................................:::::------:::::........................................................::::::..................::::::::::.....:::::::::.................................................................:::---===+++++++++++++++====---::::..::::--========--::....                 ..............................................................................................................................................................................:%@%%%%%%%%%%%%%%%%%%%@@@@@%*:...................-+*#%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%#################*********************+++=============================+==-==----------=======-------------=---------------------------------------------------------------------.            .......................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::............................................................................................                                .........        ...........................................................................................................................................................::---=============================================++++**********##############################**********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************++++++++++*****###################################################################################################################################################**************************************************************************************************###################################################################****************************************************************************************################################################################################################################################################***************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++=====================================================================================================================================================-----::::::::::::::::::::::.................................
...........................................................................................::::::::........................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::...............................................................................................................................................................................:::::::.............:::::::::::::::::::........................................................................::::::-------::::........................................................::::::..................:::::::::.....::::::::::................................................................:::---===++++++++++++++====---::::....::::--========--::....                 ..............................................................................................................................................................................:%@%%%%%%%%%%%%%%%%%%%%%@@@@@%*+++********:.....-#%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################********************++++++===========================+=-==--------------=--------------------------------------------------------------------------------------.            ......................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::.......::::::...........................................................................................                                .........         ..........................................................................................................................................................::---==============================================++++*********##############################**********************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************##########################################################################################################################*****************************************************************+++++++++++****###################################################################################################################################################**********************************************************************************************#######################################################################****************************************************************************************########################################################################################################################################***********************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++======================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++=====================================================================================================================================================-----:::::::::::::::::::::..................................
............................................................................................::::::::.......................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::...................................................................................................................................................................................................:::::::::::::::::::........................................................................:::::-------:::::.......................................................:::::::.................::::::::::....:::::::::::...............................................................:::---===+++++++++++++====----::::......:::--=========-::....                ................................................................................................................................................................................%@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%#######%*:...-#%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################*******************++++++++========================+=====-----------------------------------------------------------------------------------------------------.            .....................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::........::::............................................................................................                                .........         ..........................................................................................................................................................::---===============================================++++********##############################**********************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************##########################################################################################################################*****************************************************************+++++++++++****###################################################################################################################################################********************************************************************************************#########################################################################****************************************************************************************####################################################################################################################################****************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===+++++======================================================================================================================================================-----:::::::::::::::::::::..................................
.............................................................................................::::::::.....................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::...................................................................................................................................................................................................:::::::::::::::::::........................................................................:::::-------::::::......................................................:::::::................:::::::::::...:::::::::::...............................................................:::---===+++++++++++=====----::::........:::-==========--:....                ................................................................................................................................................................................%@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%#######%#***%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%###################*******************++++++++++=====================++=++==--------------=-------------------------------------------------------------------------------------:             ....................................................................................................................................................................................................................................................::::------------------------------------------------------------::::::::::::::::........::::............................................................................................                                 .... ..          ..........................................................................................................................................................::---================================================++++********##############################**********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************##########################################################################################################################*****************************************************************+++++++++++****###################################################################################################################################################******************************************************************************************###########################################################################****************************************************************************************##############################################################################################################################***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++======================================================================================================================================================-----:::::::::::::::::::::..................................
..............................................................................................::::::::...................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::...................................................................................................................................................................................................:::::::::::::::::::.......................................................................::::::--------:::::......................................................:::::::................::::::::::....:::::::::::...............................................................:::--=====+++++++======----::::..........::--==========--:....               ................................................................................................................................................................................:@%*@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%#######%@%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################******************++++++++++====================++=---==--------------=-------------------------------------------------------------------------------------:             ...................................................................................................................................................................................................................................................::::------------------------------------------------------------::::::::::::::::........................................................................................................                                      .           ..........................................................................................................................................................::---=================================================++++*******##############################**********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************##########################################################################################################################*****************************************************************+++++++++++*****##################################################################################################################################################*****************************************************************************************############################################################################****************************************************************************************######################################################################################################################***********************************************************************************************************************************************************************###******************************************************+++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++======================================================================================================================================================-----:::::::::::::::::::::..................................
................................................................................................:::::::.................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::...................................................................................................................................................................................................:::::::::::::::::::.......................................................................:::::---------:::::.....::..............................................::::::::...............:::::::::::...::::::::::::..............................................................::::--=====+++=======----:::::............::--==========--:....              .................................................................................................................................................................................:@%.*@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%####%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################*******************+++++++++++=================+++-:-==---------------=-------------------------------------------------------------------------------------:             ..................................................................................................................................................................................................................................................::::------------------------------------------------------------::::::::::::::::.........................................................................................................                                                 ..........................................................................................................................................................::---==================================================++++******###############################*********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************#########################################################################################################################*****************************************************************++++++++++++*****##################################################################################################################################################***************************************************************************************#############################################################################*****************************************************************************************##############################################################################################################****************************************************************************************************************************************************************************#############***********************************************+++++++++++++++++++++++++++++++++++++++====================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++==================================================================================================================================-----================-----::::::::::::::::::::::.................................
.................................................................................................:::::::................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::...................................................................................................................................................................................................:::::::::::::::::::.......................................................................:::::---------:::::...::::::............................................::::::::...............::::::::::....::::::::::::..............................................................::::--===========------:::::..............::--==========--:....             ..................................................................................................................................................................................:@%.+@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%##%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%##########################*******************+++++++++++===============+++=:--=----------------==------------------------------------------------------------------------------------.              ..................................................................................................................::::..........................................................................................................................::::------------------------------------------------------------::::::::::::::::.........................................................................................................                                                ...........................................................................................................................................................::---===================================================++++*****###############################*********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************#########################################################################################################################*****************************************************************++++++++++++******#################################################################################################################################################**************************************************************************************##############################################################################*****************************************************************************************#########################################################################################################******************************************************************************************************************************************************************************###################*********************************************++++++++++++++++++++++++++++++++++++++====================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++================================================================================================================================----------=============-----::::::::::::::::::::::.................................
..................................................................................................::::::::............................................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::...................................................................................................................................................................................................:::::::::::::::::::.......................................................................:::::---------::::::::::::::::..........................................:::::::...............:::::::::::....::::::::::::..............................................................::::----=====-------::::::................::--==========--:...             ...................................................................................................................................................................................:@@##@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################*******************+++++++++++==============+*=---==-----------------=------------------------------------------------------------------------------------.              ..............................................................................................................:::::::::........................................................................................................................::::-----------------------------------------------------------:::::::::::::::::.........................................................................................................                                                ...........................................................................................................................................................::---===================================================++++******###############################********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************#########################################################################################################################*****************************************************************+++++++++++++******################################################################################################################################################**************************************************************************************##############################################################################*****************************************************************************************####################################################################################################***********************************************************************************************************************************************************************************###################*********************************************++++++++++++++++++++++++++++++++++++++====================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++================================================================================================================================------------============-----::::::::::::::::::::::.................................
...................................................................................................::::::::..........................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::...................................................................................................................................................................................................:::::::::::::::::::.......................................................................::::-:-------:::::::::::::::::.........................................::::::::..............:::::::::::.....::::::::::::...............................................................::::-----------::::::::..................::--==========-::...             ....................................................................................................................................................................................#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%#########################*********************++++++++++============+*+-:-==-----------------==------------------------------------------------------------------------------------               ............................................................................................................::::::::::........................................................................................................................::::-----------------------------------------------------------:::::::::::::::::.........................................................................................................                                                ...........................................................................................................................................................::---=====================================================+++*****###############################********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************#########################################################################################################################*****************************************************************++++++++++++++******#########**#####################################################################################################################################*************************************************************************************##############################################################################*****************************************************************************************##############################################################################################**************************************************************************************************************************************************************************************#######################*********************************************++++++++++++++++++++++++++++++++++++++====================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++================================================================================================================================-------------===========-----::::::::::::::::::::::.................................
.....................................................................................................::::::::.............................................................................................................................................................::..........................................................................................................................::::::::::::::::::::::::::::::::...................................................................................................................................................................................................::::::::::::::::::.......................................................................::::::--------::::::::::::::::::........................................::::::::..............::::::::::::...:::::::::::::................................................................::::::---::::::::::.....................::--=========--::...            .....................................................................................................................................................................................=@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%@@%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%##########################**********************++++++++==++========+*+---+=-------------------=-----------------------------------------------------------------------------------:              ...........................................................................................................::::::::::::.......................................................................................................................::::------------------------------------------------------------::::::::::::::::.........................................................................................................                                                 ..........................................................................................................................................................::---=====================================================++++****################################*******************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************###*******************########################################################################################################################****************************************************************+++++++++++++++++*****########***#################################################################################****##*####################################*#######************************************************************************************################################################################################****************************************************************************************##########################################################################################*******************************************************************************************************************************************************************************************######################**********************************************++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===++==============================================================================================================================---------------===========-----:::::::::::::::::::::::................................
......................................................................................................::::::::........................................................................................................................................................::::::::.....................................................................................................................:::::::::::::::::::::::::::::::::::...................................................................................................................................................................................................::::::::::::::::::.......................................................................::::::--------::::::::::::::::::.......................................::::::::..............::::::::::::....:::::::::::::................................................................:::::::::::::::.........................::--=========--:....            .....................................................................................................................................................................................:@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#############################**********************+++++++++==+======+++--=+---------------------=-----------------------------------------------------------------------------------:              ..........................................................................................................:::::::::::::......................................................................................................................::::------------------------------------------------------------::::::::::::::::..........................................................................................................                                                ..........................................................................................................................................................:::--======================================================+++*****###############################*******************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************###*******************########################################################################################################################*****************************************************************+++++++++++++++++****#######****############################################################################************##################################****######************************************************************************************################################################################################****************************************************************************************#######################################################################################**********************************************************************************************************************************************************************************************######################**********************************************+++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===++=============================================================================================================================-----------------==========-----:::::::::::::::::::::::................................
......................................................................................................::::::::::.....................................................................................................................................................::::::::::...................................................................................................................::::::::::::::::::::::::::::::::::::...................................................................................................................................................................................................::::::::::::::::::.......................................................................::::::--------:::::::::::::::::::......................................::::::::..............::::::::::::....:::::::::::::...................................................................:::::::..............................::--========--::...            .......................................................................................................................................................................................*@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%###############################**********************+++++++++++=====+++--+=----------------------==----------------------------------------------------------------------------------.              .........................................................................................................:::::::::::::......................................................................................................................::::------------------------------------------------------------::::::::::::::::...........................................................................................................                                               ..........................................................................................................................................................:::--=======================================================+++****###############################*******************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************####******************########################################################################################################################*****************************************************************++++++++++++++++++****######****#######################################################################******************#################################****######************************************************************************************################################################################################****************************************************************************************####################################################################################*************************************************************************************************************************************************************************************************#####################***********************************************+++++++++++++++++++++++++++++++++++++======================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++=============================================================================================================================------------------==========-----:::::::::::::::::::::::................................
........................................................................................................:::::::::...................................................................................................................................................::::::::::...................................................................................................................:::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................:::::::::::::::::.......................................................................:::::::------::::::::::::::::::::......................................::::::::.............:::::::::::::...::::::::::::::........................................................................................................::--========--:....             ......................................................................................................................................................................................-@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################***********************+++++++++++==+++===------------------------==---------------==-----------------------------------------------------------------               ........................................................................................................:::::::::::::......................................................................................................................::::------------------------------------------------------------::::::::::::::::.............................................................................................................                                             ..........................................................................................................................................................:::--========================================================+++****###############################******************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###******************########################################################################################################################*****************************************************************+++++++++++++++++++****####******###########################################################******************************################################****#######***********************************************************************************################################################################################****************************************************************************************################################################################################*****************************************************************************************************************************************************************************************************#####################***********************************************+++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====+=============================================================================================================================------------------==========-----:::::::::::::::::::::::................................
.........................................................................................................::::::::::.................................................................................................................................................::::::::::..................................................................................................................::::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................::::::::::::::::........................................................................:::::::::--:::::::::::::::::::::::....................................:::::::::.............:::::::::::::...::::::::::::::........................................................................................................::--=======--::....             ......................................................................................................................................................................................:%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%@@@@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################************************+++++++++=++++==--------------------------==------------=====----------------------------------------------------------------:               ....................................................................................:::...............::::::::::::::......................................................................................................................::::-----------------------------------------------------------:::::::::::::::::..............................................................................................................                                            ..........................................................................................................................................................:::--=========================================================+++***################################*****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************####*****************########################################################################################################################*****************************************************************+++++++++++++++++++*****###******########################################################*********************************################################*****######***********************************************************************************################################################################################****************************************************************************************##########################################################################***********************************************************************************************************************************************************************************************************####################*************************************************+++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====+=============================================================================================================================----------:::------=========-----:::::::::::::::::::::::................................
..........................................................................................................::::::::::.................................................................................................................................................::::::::..................................................................................................................:::::::::::::::::::::::::::::::::::::::.....................................................................................................................................................................................................::::::::::::::.........................................................................::::::::::::::::::::::::::::::::::....................................:::::::::.............::::::::::::....::::::::::::::........................................................................................................::--======--::....              .......................................................................................................................................................................................+@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%####################################*************************+++++++++***+----------------------------===--------==+=+=====--------------------------------------------------------------.                .................................................................................:::::..............::::::::::::::......................................................................................................................::::----------------------------------------------------------::::::::::::::::::..............................................................................................................                                            ..........................................................................................................................................................:::--==========================================================+++***###############################*****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************####*****************########################################################################################################################*****************************************************************++++++++++++++++++++*************#####################################################*************************************##############################******######***********************************************************************************################################################################################****************************************************************************************#####################################################################****************************************************************************************************************************************************************************************************************####################*************************************************+++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==================================================================================================================================---------:::::------========-----:::::::::::::::::::::::................................
...........................................................................................................::::::::::.................................................................................................................................................:::::...................................................................................................................::::::::::::::::::::::::::::::::::::::::................................................................................................................. .....................................................................................:::::::::::..........................................................................:::::::::::::::::::::::::::::::::::...................................:::::::::............:::::::::::::....:::::::::::::.........................................................................................................::--======--::...                 .....................................................................................................................................................................................-@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%###%#####################################**************************+++++++***=-----------====---------------=-------=++==++======-------------------------------------------------------------                 ...............................................................................:::::::.............::::::::::::::......................................................................................................................::::----------------------------------------------------------::::::::::::::::::.................................................................................................................                                         ..........................................................................................................................................................:::--===========================================================+++***##############################*****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************####*****************########################################################################################################################******************************************************************+++++++++++++++++++*************####################################################**************************************##############################******######***********************************************************************************################################################################################****************************************************************************************##################################################################*******************************************************************************************************************************************************************************************************************###################***************************************************++++++++++++++++++++++++++++++++++++========================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=================================================================================================================================----------::::::-----========-----:::::::::::::::::::::::................................
............................................................................................................::::::::::........................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::........................................................................................................................................................................................................::::::::............................................................................:::::::::::::::::::::::::::::::::::...................................::::::::::...........:::::::::::::....:::::::::::::.........................................................................................................::--=====--::...                   ....................................................................................................................................................................................:%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################***************************++++****------===+********+=------------==---=++===============----------------------------------------------------------:                ...............................................................................:::::::.............::::::::::::::......................................................................................................................::::----------------------------------------------------------::::::::::::::::::......................................................................................................................                                    ..........................................................................................................................................................:::--============================================================++***##############################*****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#####****************########################################################################################################################******************************************************************++++++++++++++++++++************####################################################**************************************###############################****#######***********************************************************************************################################################################################****************************************************************************************###############################################################**********************************************************************************************************************************************************************************************************************###################***************************************************++++++++++++++++++++++++++++++++++++========================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=================================================================================================================================----------::::::-----=======-----::::::::::::::::::::::::................................
.............................................................................................................:::::::::::.....................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::....................................::::::::............:::::::::::::....:::::::::::::.........................................................................................................::--====--::....                    ....................................................................................................................................................................................+@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%##%%%#####################################***************************+++***+--==*****************+=-----:------==+========++========----------------------------------------------------------.               .....................................................................:........:::::::::............:::::::::::::::.....................................................................................................................::::----------------------------------------------------------::::::::::::::::::.....................................................................................................::::......................                          ...........................................................................................................................................................:::---============================================================++***#############################*****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************####*****************#######################################################################################################################*******************************************************************+++++++++++++++++++*************###################################################***************************************##############################*****######***********************************************************************************################################################################################****************************************************************************************###########################################################****************************************************************************************************************************************************************************************************************************##################****************************************************+++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--================================================================================================================================-----------:::::::----------------::::::::::::::::::::::::................................
..............................................................................................................:::::::::::...................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::.....................................::::::::..........::::::::::::::....:::::::::::::........................................................................................................:::--===--::....                      ...................................................................................................................................................................................-@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%#%%######################################**************************++****++***********************+=-------===+=====================--------------------------------------------------------:                ...................................................................:::.......:::::::::............:::::::::::::::.....................................................................................................................::::----------------------------------------------------------::::::::::::::::::...................................................................................................:::::::::..................... ..   ...               ...........................................................................................................................................................:::---=======================================================--====++**#############################*****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#####*****************#######################################################################################################################*******************************************************************+++++++++++++++++++*************###################################################***************************************###############################**########***********************************************************************************################################################################################****************************************************************************************#######################################################********************************************************************************************************************************************************************************************************************************##################****************************************************+++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--================================================================================================================================-----------:::::::----------------::::::::::::::::::::::::................................
................................................................................................................:::::::::::................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................::::::::::::::::::::....::::::::::......................................:::::::::.........::::::::::::::...::::::::::::::........................................................................................................:::--==---:....                         ..........................................................................................................................................:-:.....................................%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%##%%#%%########################################**************#*********++******************************++==----==+===+=======================----------------------------------------------------.                ..................................................................::::.....::::::::::............:::::::::::::::.....................................................................................................................::::----------------------------------------------------------:::::::::::::::::...................................................................................................::::::::::::.......................                    ...........................................................................................................................................................:::---=======================================================---===++***#############################****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#####*****************#######################################################################################################################********************************************************************+++++++++++++++++***************###################################################**************************************#########################################***********************************************************************************###############################################################################*****************************************************************************************##############################################***************************************************************************************************************************************************************************************************************************************####################****************************************************+++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===============================================================================================================================-----------:::::::::--------------:::::::::::::::::::::::::................................
.................................................................................................................:::::::::::.............................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................:::::::::::::::::::.......::::::.........................................::::::::........:::::::::::::::...::::::::::::::........................................................................................................:::------::....                          .........................................................................................................................................=%*-:...................................+@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%#%%%%#########################################**********####*****************************************++++=========+=======----==-=======--------------------------------------------------------.                .................................................................::::.....::::::::::............:::::::::::::::.....................................................................................................................::::----------------------------------------------------------::::::::::::::::...................................................................................................::::::::::::::::.....................                . ............................................................................................................................................................:::---========================================================--====++**#############################****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#####*****************#######################################################################################################################*********************************************************************++++++++++++++++***************###################################################**************************************#########################################***********************************************************************************###############################################################################*****************************************************************************************###################################************************************************************************************************************************************************************************************************************************************************#######################***************************************************++++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--================================================================================================================================----------:::::::::-------------::::::::::::::::::::::::::................................
..................................................................................................................:::::::::::...........................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................................................................................     .......................................................................................::::::::::::::::::......................................................::::::::.......:::::::::::::::....::::::::::::::........................................................................................................:::-----::....                            ........................................................................................................................................=%@@#=:.................................-@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%############***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%###########################################*******#####*#***+=+*********************************+++++============----------====-----------------::-----------------------------------------:  .              ................................................................::::.....::::::::::............:::::::::::::::.....................................................................................................................::::----------------------------------------------------------::::::::::::::::...................................................................................................:::::::::::::::::::::......................          ..............................................................................................................................................................:::---=========================================================-====++***############################****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#####*****************#######################################################################################################################**********************************************************************+++++++++++++++***************###################################################**************************************#########################################***********************************************************************************##############################################################################******************************************************************************************#################################**************************************************************************************************************************************************************************************************************************************************#########################*************************************************++++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--================================================================================================================================----------::::::::::------------:::::::::::::::::::::::::::...............................
....................................................................................................................::::::::::.........................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................................................................................        .......  ...........................................................................:::::::::::::::::.......................................................::::::::::..::::::::::::::::::....::::::::::::::........................................................................................................:::----::....                              .......................................................................................................................................:+@@@@%*-:..............................:%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%###########****######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%###########################################******#####*#*+=--=##*******************************++*++=========--------------------------------------::::::----------------------------------: .               ...............................................................::::....:::::::::::...........::::::::::::::::....................................................................................................................:::::----------------------------------------------------------::::::::::::::::...................................................................................................::::::::::::::::::::::::::...................      ................................................................................................................................................................:::---==============================================================++***#############################***************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#####*****************#######################################################################################################################**********************************************************************+++++++++++++++****************##################################################**************************************#########################################************************************************************************************############################################################################********************************************************************************************###########################*****************************************************************************************************************************************************************************************************************************************************###########################**************************************************++++++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==============================================================================================================================-----------:::::::::::::--------:::::::::::::::::::::::::::::...............................
.....................................................................................................................::::::::::.......................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................................................................................................................  .       .....       ........................................................................::::::::::::::::.......................................................::::::::::::::::::::::::::::::....::::::::::::::........................................................................................................::::--:::....                               ...............................................................................................................................:::::::.:+%@@@@@#+:.............................*@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%########*****########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%@%%%%%%%%%%#############################################***########*----=##*******************************++*++=======-------------------------------:::---------------------------------------------:-...               ................................................................::...::::::::::::...........::::::::::::::::....................................................................................................................:::::----------------------------------------------------------::::::::::::::::........................::........................................................................:::::::::::::::::::::::::::::::...............................................    ..................................................................................................................................:::---==============================================================+++***############################***************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************####******************######################################################################################################################***********************************************************************+++++++++++++*****************##################################################***************************************#########################################***********************************************************************************###########################################################################***********************************************************************************************###################********************************************************************************************************************************************************************************************************************************************************###############################***************************************************++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=============================================================================================================================------------:::::::::::::::---::::::::::::::::::::::::::::::::...............................
......................................................................................................................::::::::::.....................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................................................................................................................             ..         .......................................................................::::::::::::::........................................................:::::::::::::::::::::::::::::....:::::::::::::::........................................................................................................::::::::....                                 ...........................................................................................................................::--====++=--=*%@@@@@%#=:..........................-@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%@%%%%%%%%##############################################*##########=---=##*******************************+*+++=======------------------------------------::::::::::::--:-------------------------------..                ....................................................................::::::::::::...........::::::::::::::::....................................................................................................................:::::----------------------------------------------------------::::::::::::::::........................:::.......................................................................::::::::::::::::::::::::::::::::::............................................     .................................................................................................................................:::---===============================================================++***############################***************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************####******************######################################################################################################################***********************************************************************+++++++++++++*****************##################################################***************************************#########################################***********************************************************************************##########################################################################*************************************************************************************************##########*###***********************************************************************************************************************************************************************************************************************************************************################################***************************************************++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=============================================================================================================================------------::::::::::::::::::::::::::::::::::::::::::::::::::...............................
.......................................................................................................................:::::::::::...................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................................. .............................................                ..                ..............................................................::::::::::::.........................................................::::::::::::::::::::::::::::::...:::::::::::::::........................................................................................................:::::::....                                    .......................................................................................................................:=*#####%%%%#+===+#%@@@@@@%#+-.......................:%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*****************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%###%%%#################################################*--=*##********************************++++=======-------------------------------------:::::::::::::--:-----------------------------:..               ....................................................................::::::::::::...........:::::::::::::::::..................................................................................................................:::::-----------------------------------------------------------:::::::::::::::.......................:::::::.....................................................................::::::::::::::::::::::::::::::::::::::........................................     .................................................................................................................................:::---===============================================================+++***###########################***************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************####******************######################################################################################################################*************************************************************************+++++++++++*****************##################################################***************************************#########################################*****************************************++++*************************************#########################################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################################***************************************************++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--============================================================================================================================------------:::::::::::::::::::::::::::::::::::::::::::::::::::...............................
........................................................................................................................:::::::::::................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................................................................         .............................................                                  ...............................................................::::::::::.........................................................:::::::::::::::::::::::::::::::...:::::::::::::::........................................................................................................:::::::....                                    ....................................................................................................................:-*#%%%%@%%%%%%%**##%%@@@@@@@@@@%#+-....................:%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*********************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%#%%###%##%%%%################################################+=*###********************************++++========-------------------------------------::::::::::::::::-----------------------------..                ...................................................................::::::::::::...........::::::::--:::::::.............................................................................................:::::::::::::.......::::::-----------------------------------------------------------:::::::::::::::......................:::::::::....................................................................::::::::::::::::::::::::::::::::::::::::::....................................     .................................................................................................................................:::---===============================================================+++****###########################**************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************####******************######################################################################################################################**************************************************************************++++++++++*****************##################################################***************************************#########################################****************************************++++++************************************#######################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################################****************************************************+++++++++++++++++++++++++++++++++++=====================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=================================================================----=======================================================------------:::::::::::::::::::::::::::::::::::::::::::::::::::...............................
..........................................................................................................................::::::::::..............................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................            ............................................                                     ................................................................:::.............................................................:::::::::::::::::::::::::::::::...:::::::::::::::........................................................................................................::::::....                                      ..........................................................................................................::-==****#%%@@%%%%%@%%%%%%%%@@@@@@@@@@@@@@@@%#+-.................=@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#####%%%%%%#############################################*+####*******************************+++++========-------------------------------------:::::::::::::::::----------------------------::.                ..................................................................:::::::::::............:::::::----::::::........................................................................................:::::::::::::::::::::::::::::::-----------------------------------------------------------:::::::::::::::......................:::::::::....................................................................::::::::::::::::::::::::::::::::::::::::::::..................................      ................................................................................................................................:::---================================================================++****###########################**************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************###******************######################################################################################################################**************************************************************************++++++++++******************##################################################**************************************#########################################****************************************++++++************************************#####################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################################*****************************************************++++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=====+==========================================================------=====================================================------------:::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
...........................................................................................................................:::::::::.............................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................             ...........................................                                                ......................................................................................................................:::::::::::::----::::::::::::::..::::::::::::::::.........................................................................................................::::....                                       ......................................................................................................::-+*#%%%@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%#+-:............-%@@@@@@%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%######%%%%%%##################################################**********++++****************++++++========--------------------------------------:::::::::::::::::----------------------------::                 ................................................................::::::::::::............::::::-----::::::....................................................................................::::::::::::::::::::::::::::::::::------------------------------------------------------------:::::::::::::::.....................::::::::::....................................................................::::::::::::::::::::::::::::::::::::::::::::::................................      ................................................................................................................................:::---================================================================+++****##########################**************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************####*****************######################################################################################################################***************************************************************************+++++++++******************##################################################**************************************#########################################***************************************++++++++***********************************###################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################******************************************************+++++++++++++++++++++++++++++++++++======================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====++=========================================================-------====================================================------------::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
............................................................................................................................::::::::::.........................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................              ...........................................                                                     .................................................................................................................::::::::::-------:::::::::::::...::::::::::::::::.................................................................................................................                                        .................................................................................................:-=+*#%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@@@@@@@@@%%#+-:......-*%%%%@@@@@%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#####%%%%%%##############################################*##*********++++++***************++++++========--------------------------------------::::::::::::--::::---------------------------::.                 ...............................................................::::::::::::............::::::-----:::::::.................................................................................::::::::::::::::::::::::::::::::::::------------------------------------------------------------:::::::::::::::.....................::::::::::....................................................................::::::::::::::::::::::::::::::::::::::::::::::................................      ................................................................................................................................:::---================================================================+++****##########################**************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************####*****************######################################################################################################################***************************************************************************+++++++++******************##################################################**************************************#########################################***************************************++++++++++**********************************################################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################******************************************************++++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====++==========================================================----====================================================-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
.............................................................................................................................::::::::::.....................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................               ............................................                                                             ........................................................................................................::::::-----------:::::::::::::...::::::::::::::::.................................................................................................................                                        ..............................................................................................:-=+#%%%@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%@@@@@@@@@@@@@%##**=-*%%%%%%@@@@@@%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%###%###%%%%%%%############################################*###********++++++++**************++++++=========-------------------------------------::::::::::::--:::::---------------------------::    .             ..............................................................:::::--:::::............:::::-------::::::...............................................................................::::::::::::::::::::::::::::::::::::::------------------------------------------------------------:::::::::::::::.....................:::::::::::...................................................................::::::::::::::::::::::::::::::::::::::::::::::..................................    ................................................................................................................................:::---================================================================++++****#########################***************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************######****************######################################################################################################################**************************************************************************++++++++++************+*****##################################################*************************************##########################################***************************************+++++++++++**********************************##############################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################*******************************************************+++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===++++=================================================================================================================------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
..............................................................................................................................:::::::::....................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::----::::::................................................................................................................................                 .............................................                                                               .....................................................................................................::::-------------:::::::::::::..:::::::::::::::::.................................................................................................................                                         ..........................................................................................:--=+#%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%@@@@@@@@@@@@@%%@%%%%@%%%%%@@@@@%%%%%%%%%%%%%%%%%%##%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************####%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%###################################%##########********+++++++++************+++++++==========-------------------------------------:::::::::::::::::::--------------------------::.   :.             ............................................................:::::---:::::............:::::-------::::::..............................................................................::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------:::::::::::::::.....................:::::::::::....................................................................:::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---=================================================================+++****##########################**************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************######****************######################################################################################################################**************************************************************************++++++++++************++****##################################################************************************###########################################***************************************+++++++++++**********************************#############################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################********************************************************++++++++++++++++++++++++++++++++++++=====================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===+++++===========================================================================================================---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
...............................................................................................................................:::::::::...................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::-----::::::::-----::::::................................................................................................................................                 .............................................                                                                 ...................................................................................................::::-------------:::::::::::::..:::::::::::::::::.................................................................................................................                                         ........................................................................................:-====+%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************###########%%%##*****###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%################*##################%%##%######********++++++++++***********+++++++==========-------------------------------------::::::::::::::::::::--------------------------::.  .-.            ............................................................:::::---:::::............:::::-------::::::..............................................................................::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------:::::::::::::::.....................:::::::::::....................................................................:::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---=================================================================++++***##########################**************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************######*****************#####################################################################################################################*************************************************************************+++++++++++***********+++****##################################################**********************************#############################################***************************************+++++++++++**********************************#############################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################********************************************************+++++++++++++++++++++++++++++++++++++====================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===+++++======================--------=============================================================================--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
................................................................................................................................:::::::::.................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::--------------------:::::................................................................................................................................                ................................................                                                                .................................................................................................::::--------------:::::::::::::..:::::::::::::::::..................................................................................................................                                         ......................................................................................-==++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************+*+***##############**#*******##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%@@%%%%%%%%%%#######%%%%%%%############*+++**################%%#%#######******++++++++++++**********++++++++=====+=-==------------------------------------:::::::::::::::::::::------------------------::::   :-             ...........................................................:::::---:::::............::::::-----::::::::..............................................................................:::::::::::::::::::::::::::::::::::::------------------------------------------------------------:::::::::::::::......................:::::::::::.....................................................................::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---=================================================================++++****#########################**************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#######****************#####################################################################################################################**************************************************************************++++++++++**********++++*****#################################################********************************###############################################***************************************++++++++++++*********************************###########################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################*********************************************************+++++++++++++++++++++++++++++++++++===================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===+++++=========--==------------------==============================================-=========================-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
.................................................................................................................................:::::::::..............................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::---------------------:::::................................................................................................................................             ................................................                                                                        ............................................................................................::::--------------:::::::::::::..:::::::::::::::::..................................................................................................................                                         ....................................................................................:=++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####************+++++++++++++**#############***#******+****###%%%%%%%%%%%%%%%%%%%%%%%%%#*******##%%@%%%%%%%@%%#######%%%%%%###########**++++++*##############%%%%%######******++++++++++++++********++++++++==========------------------------------------:::::::::::::::::::::--------------------------::.   ::             ..........................................................::::----::::.............::::::-----::::::::................................................................................:::::::::::::::::::::::::::::::::::------------------------------------------------------------:::::::::::::::......................:::::::::::.....................................................................::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==================================================================+++****#########################*************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#######****************#####################################################################################################################**************************************************************************++++++++++**********++++*****#################################################**********************#########################################################***************************************++++++++++++**********************************##########################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################**********************************************************+++++++++++++++++++++++++++++++++++====================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===++++++========-----------------------==--============================================================----------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
..................................................................................................................................:::::::::............................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::----------------------:::::.............................................................................................................................             ...................................................                                                                           .........................................................................................::::-------------:::::::::::::...:::::::::::::::::...................................................................................................................                                        ..................................................................................:=+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*+++**++++++++++++++++++**#############****+*##***********######%%%%%%%%%%%%%%%%%%%%%##******##%@%%%%%%%%%#######%%%%%%##########*++++*+++*#############%%%%%%#####******++++++++++++++********++++++++======+===------------------------------------::::::::::::::::::::::-------------------------:::    -.             ........................................................:::::---:::::.............:::::::----::::::::...................................................................................::::::::::::::::::::::::::::::::------------------------------------------------------------:::::::::::::::......................:::::::::::......................................................................:::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==================================================================++++***#########################**************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************######****************#####################################################################################################################*************************************************************************+++++++++++**********+++++****##################################################*****************#############################################################***************************************+++++++++++++*********************************##########################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################*************************************************************++++++++++++++++++++++++++++++++++====================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++++=======------------------------------=======================================------==-=---=------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
..................................................................................................................................::::::::::.......................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::----------------------::::.............................................................................................................................            ........................................................   ...                                                                  .........................................................................................::::------------:::::::::::::....:::::::::::::::::....................................................................................................................                                        ................................................................................-+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%#######*+++++++++++++++++++++****############***++*#*##*****+*******######%%%%%%%%%%%%%%%%%%#%###****#%@%%%%%%%%%#######%%%%%%%########**+*+++*++*#############%%%%%%####*******++++++++++++++*******++++++++======+=-==-----------------------------------:::::::::::::::::::::::--------------------------:.   .:              .......................................................:::::---:::::.............::::::::---::::::::.......................................................................................::::::::::::::::::::::::::::------------------------------------------------------------:::::::::::::::......................:::::::::::......................................................................:::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==================================================================++++****########################******************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************######****************#####################################################################################################################************************************************************************++++++++++++**********+++++****##################################################*************#################################################################***************************************+++++++++++++*********************************##########################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################**************************************************************+++++++++++++++++++++++++++++++++++====================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++++========-------------------------------==============================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
...................................................................................................................................::::::::::....................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::-----------------------::::.............................................................................................................................            ........................................................  ......                      ..........                                     ...................................................................................:::::-----------::::::::::::......:::::::::::::::::......................................................................................................................                                      ..............................................................................:+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#########*++++++++++++++++++++**##*############**+++****##**++++++*******#####%%%%%%%%%%%%%##%%#%%%%##**#%@@%%%#%%%%#######%%%%%%#########**++*+++++*############%%%%%%%%##*******+++++++++++++++******++++++++=======+===-----------------------------------:::::::::::::::::::::::---------------------------:    ..              ......................................................::::----:::::.............:::::::::::::::::::............................................................................................:::::::::::::::::::::::------------------------------------------------------------::::::::::::::.......................:::::::::::......................................................................:::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==================================================================++++****########################*********************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#######***************#####################################################################################################################***********************************************************************+++++++++++++**********+++++****##################################################**********####################################################################****************************************+++++++++++++********************************###########################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################***************************************************************++++++++++++++++++++++++++++++++++++===================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===++++++=======-------------------------------==============================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
....................................................................................................................................::::::::::..........................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::------------------------::::............................................................................................................................             ........................................................  ........            ...........................                             ..................................................................................::::------------::::::::..........:::::::::::::::::........................................................................................................................                                    .............................................................................-*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%########################*+++++++++++++++++++*######*#*########*++=*#*******++++++++++*****######%%%%%%%%%%%%%#%%%%%%##***#%%%%%%%%%%%######%%%%%%#########**+++***+**############%%%%%%%%##******++++++++++++++++*****++++++++=======+===-----------------------------------::::::::::::::::::::::::---------------------------:                   .....................................................:::::----:::::.............:::::::::::::::::::................................................................................................:::::::::::::::::::------------------------------------------------------------::::::::::::::.......................:::::::::::......................................................................:::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==================================================================++++****########################***********************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#######***************#####################################################################################################################**********************************************************************++++++++++++++*********++++++*****##################################################******#######################################################################****************************************+++++++++++++********************************############################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################*****************************************************************+++++++++++++++++++++++++++++++++++===================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===+++++=======---------------------------------====================-----===---------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
.....................................................................................................................................:::::::::................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------::::.........................................................................................................................                ....................................................     ............      ...................................        ..               ................................................................................:::::-----------:::::::............:::::::::::::::::.........................................................................................................................                                    ..........................................................................:=##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%####%#################+++++++++++++++++++*########**##***#***+=+*#*******+++++++++++++*****#######%%##%%%%%%##%%###%##****##%%%%%%%%%##***#%%%%%##########**+*+++**############%%%%%%%%##******+++++++++++++++++****++++++++===========-----------------------------------:::::::::::::::::::::::::--------------------------:.                   ....................................................:::::---:::::::::.........:::::::::::::::::::.....................................................................................................:::::::::::::::------------------------------------------------------------::::::::::::::.......................:::::::::::......................................................................:::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---===================================================================++++***#######################**************************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#######***************#####################################################################################################################*********************************************************************+++++++++++++++*********++++++*****##################################################***##########################################################################****************************************++++++++++++++********************************###########################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##############*******************************************************************+++++++++++++++++++++++++++++++++++===================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====++++=======----------------------------------===============----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
......................................................................................................................................:::::::::............................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------:::..........................................................................................................................                ................................................         .......................................................................       ................................................................................:::::----------:::::::..............:::::::::::::::...........................................................................................................................                                   .........................................................................-+##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**********+++++++++++++++++*#########**##*******+=++##********++++++++++++++******############%#%##%########**+**##%%%%%%%##*++*#%%%############*++*++*############%%%%%%%%####****++++++++++++=++++*****+++++++========+==------:----------------------------::::::::::::::::::::::::::--------------------------:                   ....................................................::::----:::::::::::::::..::::::::::::::::::::.......................................:::::::::...........................................................:::::::::------------------------------------------------------------::::::::::::::.......................:::::::::::......................................................................:::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---===================================================================++++***#######################***************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#######****************####################################################################################################################*********************************************************************+++++++++++++++*********++++++*****###################***************#############################################################################################****************************************++++++++++++++*********************************##*########################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############********************************************************************++++++++++++++++++++++++++++++++++++==================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====+========------------------------------------=============-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................
......................................................................................................................................::::::::::........................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------::::..........................................................................................................................                ................................................              ........................................................................................................................................................::::::------:::::::::::..............:::::::::::::::.............................................................................................................................                                 ........................................................................-*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*********++++++++++++++++*#####*#####*******#***+=+*#**********++++++++++++++++******#############%%###****####*+***#%%%%%###*++*##%#############**++**#############%%%%%%%%####****+++++++=====++=++***++++++++========+==-------------------------------------::::::::::::::::::::::::---------------------------.                   ..................................................:::::----:::::::::::::::::::::::::::::::::::::.....................................:::::::::::::............................................................:::::::-----------------------------------------------------------::::::::::::::.......................:::::::::::......................................................................::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---====================================================================+++****#####################****+++++********************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************####################################################################################################################******************************************************************++++++++++++++++++*********+++++++*****###############******************##############################################################################################***************************************+++++++++++++++****************************************######***#*########################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++===================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==============--------------------------------------======-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
.......................................................................................................................................::::::::::.......................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------======-------::::..........................................................................................................................                .................................................             ...................................................................................    .. ..............................................................::::::------:::::::::::..............:::::::::::::::..............................................................................................................................                                .......................................................................-*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########***********+++++++++++++***#####**#######******#*+==+*************+++++++++++++++++*******############%%%##**+**###****#%%%%%###**+**#%#############****##############%%%%%%%%####****++++++=======+=+++**++++++++============------------------------------------:::::::::::::::::::::::::--------------------------:                   ..................................................:::::---:::::::::::::::::::::::::::::::::::::.....................................:::::::::::::::.............................................................:::::------------------------------------------------------------:::::::::::::.......................:::::::::::......................................................................::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---====================================================================+++****#####################****+++++++*******************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************####################################################################################################################****************************************************************++++++++++++++++++++*********+++++++******############*********************#############################################################################################***************************************++++++++++++++++**************************************************#########################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----=============-----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
........................................................................................................................................::::::::::......................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------===========------:::........................................................................................................................                  ..................................................           ...................................................................................        ..............................................................::::::-----:::::::::::::.............:::::::::::::::................................................................................................................................                              ......................................................................-*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######************+++++++++++**####*##########*********+==+*#*************+=++++++++++++++++********###########%%%###********#%%%%%%%###**++*#%##############################%%%%%%%%#####***++++++=======+==+++*++++++++=============-:--------------------------------::::::::::::::::::-::::::::--------------------------.                   ................................................::::::---:::::::::::::::::::::::::::::::::::::...................................:::::::::::::::::::............................................................::::------------------------------------------------------------:::::::::::::.......................:::::::::::......................................................................::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---====================================================================++++***#####################***+++===++++++***************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************####################################################################################################################****************+**********************************************+++++++++++++++++++++*********+++++++********#######*************************############################################################################################****************************************++++++++++++++++**************************************************#######################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----============-----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
.........................................................................................................................................::::::::::................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------===============-----:::......................................................................................................................                    ..................................................           .........................................................................................................::..............................................::::::---:::::::::::::::::::::::......:::::::::::::...................................................................................................................................                           ......................................................................-*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**********+++++++++*####**###**#####**********+=+*#**************++++++++++++++++++++********###########%%%##******#%%%%%%%%%####*+*################################%%%%%%%%######**+++++============+++++++++++==========--==-:-------------------------------:::::::::::::::::---::::-:::------------------------:-.                  ................................................::::::---:::::::::::::::::::::::::::::::::::::..................................:::::::--------::::::...........................................................:::::-----------------------------------------------------------:::::::::::::........................::::::::::.....................................................................:::::::::::::::::::::::::::::::::::::::::::............. .........................................................................................................................................................:::---====================================================================++++****####################***++======++++++++++++********#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************####################################################################################################################****************++******************************************++++++++++++++++++++++++*********+++++++****************************************############################################################################################****************************************++++++++++++++++**************************************************######################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----==========-----------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
.......................................................................................................................:..................:::::::::.............................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------==================----:::......................................................................................................................                    ...................................................        ........................................................................................................::::::::..........................................::::::::-:::::::::::::::::::::::::......:::::::::::.....................................................................................................................................                          .....................................................................-*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############****##**++++++*#################**###*****+=+*#*****************++++++++++++++++++++*********###########%%#******#%%%%%%%%#####***###############################%%%%%%%%######***++++=============++++++++++==========---==--------------------------------::::::::::::::::-===-:::::::--------------------------:                  ...............................................::::::---::::::::::::::::::::::::::::::::::::::.................................::::::------------:::::...........................................................::::-----------------------------------------------------------:::::::::::::........................::::::::::.....................................................................:::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---=====================================================================+++****#####################**++=======++++++++++++++******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************#######***************####################################################################################################################****************++++************************************++++++++++++++++++++++++++++*********+++++++***************************************#############################################################################################****************************************+++++++++++++++++*************************************************#####################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++===================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----========--------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................
.......................................................................................................................:::................::::::::::..........................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------=========+++++======----::.......................................................................................................................                     ......  .........................................        ......................................................................................................::::::::::..........................................:::::::::::::::::::::::::::::::::::......:::::::::.........................................................................................................................................                      .....................................................................:+##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******##################***##***#**+=********************++=++++++++++++++++++++********###########%#******#%%%%%%%########################################%%%%%%%#######**+++++=============+++++++++==========----+----------------------------------::::::::::::::-==--::::::::------------------------:-.                  ..............................................::::::---:::::::::::::::::::::::::::::::::::::.................................::::::--------------:::::..........................................................::::----------------------------------------------------------::::::::::::::........................::::::::::....................................................................::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---=====================================================================++++***#####################**++==---====+++++++++++++******###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************#######****************###################################################################################################################****************+++++*************++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++**************************************##############################################################################################****************************************+++++++++++++++++*************************************************###############################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=======------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................
.......................................................................................................................::::................::::::::::.......................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------=========++++++++======---::........................................................................................................................  .                            ......................................       ....................................................................................................:::::------:::..........................................:::::::::::::::::::::::::::::::::::.......::::..............................................................................................................................................                   ......................................................................=*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################*#######*####*++*#*******************++++++++++++++++++++++++*********########%%#**+****%%%%%%%#######################################%%%%%%%#######**+++++==============+++=++++===========---==-------:--------------------------:::::::::::::-=-::-:::::::---------------------------.  .              .............................................::::::----:::::::::::::::::::::::::::::::::::::................................::::::----------------::::..........................................................::::----------------------------------------------------------:::::::::::::.........................::::::::::...................................................................::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---=====================================================================++++****####################***+==----====+++++++++++++******##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************#######****************###################################################################################################################****************+++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++*************************************###############################################################################################****************************************++++++++++++++++++************************************************######################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................
.......................................................................................................................:::::................:::::::::......................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------=======+++++++++++++=====--:::...........................................................................................................................                              ...................................       ..................................................................................................:::::---------::..........................................::::::::::::::::::-:::::::----:::::............................................................................................................................................................                .....................................................................-*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################**#*************************+=++++==++===+++++++++++++********##########***+***%%%%%########################################%%%%%%%#######***++++===================++============---==---::---:-------------------------:::::::::::::-=---:::::::::--------------------------:  ..             .............................................::::::----:::::::::::::::::::::::::::::::::::::................................:::::------------------::::.........................................................::::----------------------------------------------------------:::::::::::::.........................::::::::::..................................................................:::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---======================================================================+++****####################***+==-----=====++++++++++++*****##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************#######****************###################################################################################################################****************++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++*********************************#####################################################****##########################################****************************************++++++++++++++++++*************************************************#############**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................
........................................................................................................................:::::...............::::::::::..................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======++++++++++++++++====---::....................................................................................................................................                     .....................................     ................................................................................................:::::------==---:::.........................................:::::::::::::::::::------------:::::..............................................................................................................................................................           ......................................................................:+##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%######################################################################################################*###***********************+=+=++==+=====+++++++++++++++*****##########*+++***#%%%%###############**#######################%%%%%%########**+++++================================----=-:--::-::--------------------------::::::::::::-=-::::::::::::--------------------------:  :             ............................................::::::-----::::::::::::::::::::::::::::::::::::::..............................::::::------------------:::::.........................................................:::----------------------------------------------------------:::::::::::::..........................::::::::::................................................................:::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---======================================================================++++***#####################**++=------========+++++++++*****##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************###################################################################################################################****************+++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++*******************************################################################*************########################################****************************************+++++++++++++++++++***********************************************#########********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++===================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
........................................................................................................................::::::...............::::::::::................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======++++++++++++++++++====--::....................................................................................................................................                        ..................................     ..............................................................................................:::::-----======--:::..........................................:::::::::::::::::-------------:::::..................................................................................................................................................................      .......................................................................=*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##################################################%%#####################################################*************************+====+==+===========+++++++++++****#########*+*+***#%%##*#############****#####################%%%%%%########**+++++================================---==-:::::::::---------------------------:::::::::::=--::::::::::::--------------------------. .:            ............................................::::::-----:::::::::::::::::::::::::::::::::::::::............................::::::--------::::--------::::.........................................................:::----------------------------------------------------------:::::::::::::..........................::::::::::................................................................:::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---======================================================================++++****####################**++==-----===========+++++++*****#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************###################################################################################################################****************++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++***************************##############################################*******************#######################################****************************************+++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
.........................................................................................................................:::::................::::::::::.............................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======++++++++++++++++++++===--::......................................................................................................................................                         ..          ...................     .............................................................................................::::----=========--:::...........................................::::::::::::::::-------------:::::..............................................................................................................................................................................................................................................:+#%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%#####################################################%%%###%%#############%%%%###########################*************************+=+===================+++++++++++***#########++++++*##*************####*****####################%%%%%########**++++++================================--==-::::::::::----------------------------:::::::::---:::::::::::::--------------------------. :.           ..........................................::::::::------:::::::::::::::::::::::::::::::::::::::...........................:::::-------:::::::-------:::::........................................................:::----------------------------------------------------------:::::::::::::..........................::::::::::...............................................................::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---======================================================================++++****####################***+==------============++++++****#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************###################################################################################################################***************+++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++***********************##############################################************************######################################****************************************++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++=================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
..........................................................................................................................::::::..............:::::::::::..........................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======++++++++++++++++++++++===-:::......................................................................................................................................  ...                                 ..................   .............:::::::........................................................................::::----===========--:::............................................:::::::::::::::--------------::::..............................................................................................................................................................................................................................................-*%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%###########################################################%%%%##%%##########%%%%%%%%%%%%####################**************************+==+==+=================++++++++++**########*++++++*****************##******####################%%%%########***++++++===============================-==--:::::::::::-----------------------------:::::::--:::::::::::::::-------------------------: .:           ..........................................:::::::--------::::::::::::::::::::::::::::::::::::::.........................:::::::------:::::::::-------::::........................................................:::----------------------------------------------------------:::::::::::::...........................:::::::::...............................................................:::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---======================================================================++++****####################***++==-----=============++++++****################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************###################################################################################################################***************+++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++*********++++++++*******************##############################################****************************#######################################****************************************+++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================---------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
..........................................................................................................................::::::................::::::::::......................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------======+++++++++++++++++++++++===--::......................................................................................................................................  .....                               ..................   ............::::::::::....................................................................::::----=============--:::.............................................::::::::::::::-------------:::::.............................................................................................................................................................................................................................................:+#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%###################################################################%%%%####%#########%%%%%%%%%%%%%%%##############***************************+=++====================++++++++++***#######*++++++**************++**********###########***######%%########***+++++++=================================-:::::::::::::------------------------------:::::::::::::::::::::::-------------------------: ::           ........................................::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::...:::::::::::::::-------::::::::::------:::::.......................................................:::---------------------------------------------------------::::::::::::::............................::::::::..............................................................::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---=======================================================================++++***#####################**++===----===============++++****################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************###################################################################################################################****************++++++++********************++++++++++++++++++++++++++++++++++++++++*********++++++++****************#############################################*********************************######################################*****************************************+++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++=================================================---------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
...........................................................................................................................::::::...............:::::::::::.....................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------=====+++++++++++++++++++++++++===--::................................................................................................................................................                              ................. .............::::::::::::..................  .............................................::::----==============--:::.............................................::::::::::::::-------------::::.............................................................................................................................................................................................................................................:=*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%#######%%%%############################################################%%%%%%##########%%%%%%%%%%%%%%################**************************+=========================++++++++*****#####*+++++++************+++++++++++**#####*#********##############***++++++++================================-::::::::::::::------------------------------::::::::::::::::::::::--------------------------..-.          ........................................:::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::-------::::.......................................................:::---------------------------------------------------------::::::::::::::............................::::::::..............................................................::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---=======================================================================++++***#####################***++====-================+++++****################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************########***************###################################################################################################################****************++++++++*************************************+++++++++++++++++++++++*********++++++++**************##########################################**************************************#######################################*****************************************++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
............................................................................................................................::::::...............:::::::::::...................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------======+++++++++++++++++++++++++===--::................................................................................................................................................                                 ............................::::::::::::::...............    ..........................................::::----================--:::...............................................::::::::::::-----------::::::...........................................................................................................................................................................................................................................-+*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%#####%%%%%%################################################################%%%%%#######%%%%%%%%%%%%%%#################**************************+==========================++++++******#**#*+++++++++**********++++++++++++****#************#############***+++++++++================================-:::::::::::::--------------------------------:::::::::::::::::::::--------------------------.:-          ........................................::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::::.:::::-------:::.......................................................:::---------------------------------------------------------::::::::::::::............................:::::::::.............................................................::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................::---========================================================================++++****####################***++======================+++++****###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************########***************###################################################################################################################****************++++++++****************************************++++++++++++++++++++*********++++++++************######################################********************************************#######################################******************************************++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
............................................................................................................................:::::::...............::::::::::.................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------======++++++++++++++++++++++++++===--::................................................................................................................................................                                  ..........................:::::-----::::::........... ..    .........................................::::----================---:::................................................:::::::::::::::---::::::::::.........................................................................................................................................................................................................................................:+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@%%%%%%%%%%%%%%%%%%######%%%%%###################################################################%%%########%%%%%%%%%%%%###################**************************===========================++++++*********#*++++++++++********+++++++++++++********++*******#####*#**###****++++++++================================--:::::::::::::---------------------------------:::::::::::::::::::--------------------------:.-:         ........................................::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::...::::-------::::......................................................:::---------------------------------------------------------::::::::::::::.............................::::::::.............................................................::::::::::::::::::::::::::::::::::::::::::::::::::............:::......................................................................................................................................................:::---========================================================================++++****#####################**++=======================++++****###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************########***************###################################################################################################################****************+++++++*****************************************+++++++++++++++++++++********++++++++***********################################***************************************************#######################################*******************************************++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++==================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
.............................................................................................................................:::::::..............:::::::::::..............................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------======+++++++++++++++++++++++++++===--::....................................................................................................................................................                                ........................::::--------:::::...........  ............................................::::---==================--:::..................................................::::::::::::::--:::::::::::........................................................................................................................................................................................................................................:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@%@%%%%%%%%%%%%%%%%%##################################################################################%%%%####%%%%%%%%%%#####################*************************+===========================+++++************++=+++++++****+++++++++++++++++*******+=++****************#****++++++++=================================-:::::::::::::::-------------------------------::::::::::::::::::::-------------------------:::-.        ........................................::::::------------::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::-------:::::...:::::------::::......................................................:::---------------------------------------------------------:::::::::::::..............................::::::::............................................................:::::::::::::::::::::::::::::::::::::::::::::::::::...........:::::.....................................................................................................................................................::---==========================================================================++++***#####################**++=======================+++++****##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#########**************###################################################################################################################****************+++++++*********************************************+++++++++++++++++********++++++++************#######################************************************************************#######################################*******************************************++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
..............................................................................................................................::::::...............:::::::::::............................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------======++++++++++++++++++++++++++++===-:::....................................................................................................................................................                                ........................::::----------::::......................................................::::----===================--:::..................................................::::::::::::::::::::::::::.........................................................................................................................................................................................................................................*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%######################################################################################%#####%%%%%##########################**************************================+++========++++*************++=++++++++++++++++++++++++++++*******==+*********************+++++++++================================-::::::::::::::::::-----------------------------::::::::::::::::::::--------------------------:--        ........................................::::::-------------::::::::------------:::::::::::::::::::::::::::::::::::::::::::::-------::::.....::::-------:::......................................................:::---------------------------------------------------------::::::::::::................................::::::.............................................................:::::::::::::::::::::::::::::::::::::::::::::::::::...........::::::...................................................................................................................................................:::---==========================================================================++++***#####################***++=======================+++++****#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#########**************###################################################################################################################*****************++++++*********************************************+++++++++++++++++********+++++++++*************#############********************************************************************#######################################********************************************+++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
..............................................................................................................................:::::::...............::::::::::................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======+++++++++++++++++++++++++++++==--::.....................................................................................................................................................                                 .......................::::-----------:::::...................................................:::----=====================--:::..................................................::::::::::-::::::::::::::....................................::::.................................................................................................................................................................................................+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%#########################################################################################%%##%%%###########################**************************+============++*****++====++*****************+==++++++++++++++++++++++===+++******===+********************+++++++++================================-:::::::::::::::::::-----------------------------:::::::::::::::::::-----------------------------:       ........................................::::::---------------:::---------------:::::::::::::::::::::::::::::::::::::::::::::------:::::.....::::-------::::.................................:...................:::---------------------------------------------------------::::::::::::................................::::::.............................................................::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::::.................................................................................................................................................:::---===========================================================================++++***#####################***++========================+++++*****###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#########**************####################################################################################################################****************++++++*********************************************+++++++++++++++++********+++++++++**********************************************************************************************#######################################*********************************************++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
...............................................................................................................................:::::::...............::::::::::.............................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======++++++++++++++++++++++++++++++==--::.....................................................................................................................................................                                  ......................::::------------:::::.................................................:::---======================--:::..................................................:::::::::::-::::::::::::......................................::::................................................................................................................................................................................................=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%############################################################################################################################*************************+=========+**********+===+*******************+==+++=++++++++++++==========+******+===+*******************++++++++++===============================-:::::::::::::::::::::----------------------------:::::::::::::::::::-----------------------------.      ........................................::::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::------::::......::::--------:::................................:::...........  .....:::---------------------------------------------------------::::::::::::.................................:::::.............................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::........::::::::.................................................................................................................................................::---============================================================================++++***#####################***++=========================++++*******#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#########**************#####################################################################################################################***************++++++*********************************************++++++++++++++++*********+++++++++**********************************************************************************************#######################################**********************************************+++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
...............................................................................................................................::::::::...............::::::::::............................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------======+++++++++++++++++++++++++++++++==--::.....................................................................................................................................................                                     ....................:::--------------::::..............................................::::---=======================--:::..................................................:::::::::::::::::::::........................................::::::...........................................................................................................................................................................................:--=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%###################################################################################################%%%########################************************+======+*************+==*********************+=++++==+++++++==============+*****+====+******************++++++++++===============================-::::::::::::::::::::::----------------------------:::::::::::::::::::-----------------------------.      .......................................::::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::-----:::::......::::--------:::................................::::..........  .....:::----------------------------------------------------------:::::::::::....................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::........::::::::................................................................................................................................................:::---============================================================================++++***######################**+++=========================+++++*******#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#########**************#####################################################################################################################***************++++++**********************************************++++++++++++++**********+++++++++***********************************************************************************************#######################################***********************************************++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
................................................................................................................................:::::::...............:::::::::::.........................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------======++++++++++++++++++++++++++++++++==--::.....................................................................................................................................................                                     ....................:::---------------::::............................................::::---========================--:::.................................................:::::::::::::::::::::.........................................:::::::.........................................................................................................................................................................................:===#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################*#####################************************+====+**************+==**********************+=++++==+++==================+****+====++******************++++++++++==============================-:::::::::::::::::::::::----------------------------:::::::::::::::::::----------------------------:      .......................................:::::------------------------------------:::::::::::::::::::::::::::::::::::::::::::----::::::......::::--------:::................................:::::........   .....:::----------------------------------------------------------:::::::::::....................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::......:::::::::................................................................................................................................................::---=============================================================================++++***######################***++==========================+++++*******######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************##########*************######################################################################################################################***************+++++**********************************************+++++++++++++***********+++++++++***********************************************************************************************#######################################************************************************++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++====================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
.................................................................................................................................:::::::...............:::::::::::......................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------======+++++++++++++++++++++++++++++++++==--::.....................................................................................................................................................                                              ...........:::----------------::::..........................................::::---========================--:::..............................................:.:::::::::::::-:::::::::........................................::::::::.........................................................................................................................................................................................-==+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################**********************+==+****************+=***********************+***+========================+***+=====+******************++++++++++===============================-:::::::::::::::::::::::----------------------------:::::::::::::::::::----------------------------:     .......................................:::::------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::......::::--------:::................................:::::........   .....:::----------------------------------------------------------:::::::::::.....................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::::::::...............................................................................................................................................:::---=============================================================================++++***######################***++===========================++++++*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************##########*************#########################################################################################################################************+*+++**********************************************+++++++++***************+++++++++***********************************************************************************************#######################################*************************************************+++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................
.................................................................................................................................::::::::...............:::::::::::.................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------======+++++++++++++++++++++++++++++++++===--::.....................................................................................................................................................                                               ..........:::-----------------::::........................................::::---=========================--:::..............................................:::::::::::::::--:::::::.........................................:::::::::........................................................................................................................................................................................===*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################**********************++******************++***************************+=======================+***+======+******************++++++++++==============================-::::::::::::::::::::::::---------------------------::::::::::::::::::::----------------------------.    .......................................:::::------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::.......::::--------:::................................::::::.......   .....:::-----------------------------------------------------------::::::::::.....................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................................................................:::--===============================================================================+++***######################***++============================++++++++******##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************##########*************#############################################################################################################################**********+++***********************************************++++++******************+++++++++**********************************************************************************************#######################################*************************************************++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++==================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
..................................................................................................................................::::::::...............:::::::::::................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======++++++++++++++++++++++++++++++++++===--::...................................................................................................................................................   .  .                                            ........:::------------------::::......................................::::---=========================---:::.................................................::::::::::::::::::::::........................................:::::::::.......................................................................................................................................................................................:===#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%##############################################################################################################*******************************************************************+++=======================+**+======+******************++++++++++==============================-:::::::::::::::::::::::::----------------------------::::::::::::::::::-----------------------------   ........................................::::--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::........:::::-------:::.......................... .....::::::.......   .....:::-----------------------------------------------------------::::::::::......................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................................................................::---===============================================================================+++****######################**+++============================++++++++******#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#########*************##############################################################################################################################************************************************************+*++*******************+++++++++**********************************************************************************************#######################################****************************************************++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:...........................
...................................................................................................................................::::::::...............::::::::::................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======+++++++++++++++++++++++++++++++++++===-:::...................................................................................................................................................                                                   ........:::-------------------::::.....................................:::---==========================--:::...................................................:::::::::--:::::::::::......................................::::::::::........................:::::::::......................................................................................................................................................-===#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################*################################*****************************************************************+==++======================+***=======+*****************+++++++++++=============================-::::::::::::::::::::::::::---------------------------:::::::::::::::::::----------------------------:   ......................................:::::--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::........:::::-------::::................................::::::.......  .....:::-----------------------------------------------------------::::::::::.........................................................................................................:::::::....................::::::::::::::::::::::::::::::::::::...............................................................................................................................................::---===============================================================================+++****######################**+++==============================++++++++******###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#########*************##############################################################################################################################***********************************************************++*************##*******+++++++++***********************************************************************************************######################################****************************************************++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++==================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:...........................
...................................................................................................................................::::::::................::::::::::...........................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------======++++++++++++++++++++++++++++++++++++==--::....................................................................................................................................................                                                    .......:::--------------------:::...................................::::---==========================---:::...................................................:::::::::-::::::::::::......................................::::::::::....................::::::::::::::::::.................................................................................................................................................-===#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################**################################***************************************+************************+===++======================+**=======+******************+++++++++++=============================::::::::::::::::::::::::::::--------------------------:::::::::::::::::::----------------------------. ......................................:::::---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::.........:::::-------::::................................::::::....... ......:::-----------------------------------------------------------::::::::::.......................................................................................................................................:::::::::::::::::::::::::::::::::...............................................................................................................................................::---===============================================================================+++****######################**+++================================+++++++******##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#########*************###############################################################################################################################*********************************************************++**********#######******+++++++++***********************************************************************************************######################################******************************************************+++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++==================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:...........................
....................................................................................................................................::::::::................:::::::::........................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------======+++++++++++++++++++++++++++++++++++++==--::....................................................................................................................................................                                                    .......:::---------=======-----:::.................................::::---===========================--:::....................................................::::::::::::::::::::::......................................:::::::::::.................::::::::::::::::::::::::::...........................................................................................................................................-===#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################+*#################################**************************************+=+**********************+====+*=====================++*+=======+*****************+++++++++++=============================-::::::::::::::::::::::::::::--------------------------::::::::::::::::::::--------------------------: ....................................:::::::----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::.........::::::-------:::::...............................:::::::...... ......:::-----------------------------------------------------------:::::::::..........................................................................................................................................:::::::::::::::::::::::::::::::...............................................................................................................................................::---===============================================================================++++***######################***++=================================++++++++******############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#########*************###############################################################################################################################**********+********************************************************##########******++++++++************************************************************************************************#####################################*******************************************************+++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................
.....................................................................................................................................::::::::...............::::::::::.....................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------======++++++++++++++++++++++++++++++++++++++==--::....................................................................................................................................................                                                     ......:::--------=========-----:::................................:::---============================--:::.....................................................:::::::::::::::::::.......................................::::::::::::................:::::-----:::::::::::::::::::::..............................................................................................::::.....................................-===*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################**###################################*************************************+=+*********************+=====+*=====================+*+========+****************+++++++++++=============================-:::::::::::::::::::::::::::::--------------------------:::::::::::::::::::::-------------------------. ..................................:::::::-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::..........::::::--------:::::..............................::::::::..... ......::::----------------------------------------------------------:::::::::.....................................................................................................................................................::::::::::::::::::::...............................................................................................................................................::--================================================================================++++***######################***++===================================+++++++******###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#########**************##############################################################################################################################******************************************************************############*****++++++++*************************************************************************************************#####################################*******************************************************++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++==================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................
.....................................................................................................................................:::::::::...............::::::::::.................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------=======+++++++++++++++++++++++++++++++++++++++==--::...................................................................................................................................................                                                       .....:::------=============----:::..............................:::---============================--::::.....................................................:::::::::::::::::.........................................::::::::::::...............::::----------:::::::::::::::::::::::.........................................................................................:::::....................................:===+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%###############################################################################*+####################################*************************************===+*******************+======+*====================+*+========+****************++++++++++++=============================::::::::::::::::::::::::::::::-------------------------::::::::::::::::::::::::-----------------:-----. ...............................::::::::------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::..........:::::::-------:::::::::::::......................::::::::............::::----------------------------------------------------------:::::::::.......................................................................................................................................................::::::::::::::::::...............................................................................................................................................::--================================================================================++++***######################***++=====================================+++++++*****##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#########**************###############################################################################################################################****************************************************************##############****++++++++*****#*******************************************************************************************#####################################*********************************************************++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................
......................................................................................................................................:::::::::...............:::::::::.................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=======+++++++++++++++++++++++++++++++++++++++===--::...................................................................................................................................................                                                       .....:::------==============----:::...........................::::---============================---:::.......................................................::::::::::::::...........................................::::::::::::..............:::------------::::::::::::::::::::::::::::....................................................................................:::::....................................:====#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%##############################################################################*+*####################################************************************+====******************+=======++====================+*=========+***************+++++++++++++===========================-:::::::::::::::::::::::::::::::-------------------------:::::::::::::::::::::::::---------::----:-----:. .................:..........:::::::::-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::...........:::::::--------::::::::::::::::::::::............:::::::::...........::::----------------------------------------------------------:::::::::.........................................................................................................................................................::::::::::::::::...............................................................................................................................................::--================================================================================++++****#####################***+++======================================++++++******########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************##########*************###############################################################################################################################***************************************************************################****+++++++****#####****************************************************************************************#####################################**********************************************************++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................
.......................................................................................................................................:::::::::..............:::::::::.................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------======++++++++++++++++++++++++++++++++++++++++===--::...................................................................................................................................................                                                        ....:::------===============---::::..........................:::---=============================--:::.........................................................::::::::::::...................:::::::.................::::::::::::::............:::----------------::::::::::::::::::::::::::::.................................................................................::::::...................................:====+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%###############################################################################+*######################################***********************************=====+****************+========++===================+*+========+***************+++++++++++++===========================-::::::::::::::::::::::::::::::::-------------------------::::::::::::::::::::::::------::::::-:--::----. .................:.......::::::::::--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::...........:::::::---------:::::::::::::::::::::::..........:::::::::...........:::::---------------------------------------------------------:::::::::..........................................................................................................................................................:::::::::::::::...............................................................................................................................................::--================================================================================++++****######################**+++=======================================+++++++*****#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************##########*************###############################################################################################################################***************************************************************################****+++++++***########**************************************************************************************#####################################***********************************************************++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++====================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................
........................................................................................................................................::::::::...............:::::::::..............................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------=======+++++++++++++++++++++++++++++++++++++++++===--::...................................................................................................................................................                                                        .....::-----=================---:::.........................:::---=============================---:::..........................................................::::::::::....................::::::::.:..............::::::::::::::...........:::----====----------::::::::::::::::::::::::::::::::::...........................................................................:::::....................................-====#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%##################%%%%%##############################################################################++#######################################**********************************+=====+****************+========++==================+*+=========+**************+++++++++++++++=========================-:::::::::::::::::::::::::::::::::------------------------:::::::::::::::::::::::::::::::::::::::::--:--: .................:.....:::::::::::----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::...........::::::::----------------::::::::::::::::.........::::::::::..........:::::---------------------------------------------------------:::::::::...........................................................................................................................................................::::::::::::::..............................................................................................................................................:::--================================================================================++++*****#####################**+++========================================+++++++*****######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************##########*************################################################################################################################################************************************************************###################***++++++****#########**************************************************************************************####################################*************************************************************++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
........................................................................................................................................:::::::::...............::::::::..............................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=======++++++++++++++++++++++++++++++++++++++++++===--::..................................................................................................................................................                                                          ....::-----=================----:::.......................:::---==============================--:::...........................................................:::::::::.......................::::::::..............::::::::::::::..........:::----=====-----------::::::::::::::::::::::::::::::::::::::.......................................................................::::....................................:===+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%##############################################################################*+########################################**********************************=======+***************+========+*==================++==========**************++++++++++++++++========================-:::::::::::::::::::::::::::::::::-------------------------::::::::::::::::::::::::::::::::::::::::::----. ................:...::::::::::::----------------------------------------------:::::::::::::::::..:::::::::::::::::::::::::::...........::::::::----------------------:::::::::::........::::::::::...........:::::--------------------------------------------------------:::::::::............................................................................................................................................................:::::::::::::..............................................................................................................................................:::--================================================================================++++******####################***++===========================================+++++*****#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************##########*************################################################################################################################################*********************************************########******####################****+++++****#########*************************************************************************************#####################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
.........................................................................................................................................:::::::::..............:::::::::............................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------=======+++++++++++++++++++++++++++++++++++++++++++===--::..................................................................................................................................................                                                          ....:::----===================---:::.....................:::---==============================---:::.............................................................:::::...........................::::::::::.........:::::::::::::::.........:::----=======------------:::::::::::::::::::::::::::::::::::::::::...........................................................................................................-==*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%#############################################################################*+*########################################*********************************+=======+***************+========++=================+===========+**********+***+++++++++++++++++======================-::::::--::::::::::::::::::::::::::-------------------------:::::::::::::::::::::::::::::::::::::::::::---.................::::::::::::::------------------------------------------------:::::::::::::::.......:::::::::::::::::::::::............:::::::::----------------------------::::::......:::::::::::..........::::::-------------------------------------------------------:::::::::............................................................................................................................................................:::::::::::::..............................................................................................................................................::---================================================================================+++++*******##################***++============================================++++++*****###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************##########*************################################################################################################################################****************************************#######################################*****+++****###########************************************************************************************#####################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
..........................................................................................................................................:::::::::..............::::::::...........................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------=======++++++++++++++++++++++++++++++++++++++++++++===-:::..................................................................................................................................................                                                          ....:::----====================---:::...................::::--==============================---:::...............................................................................................:::::::::::::::::::::::::::::::::........::::---========-------------:::::::::::::::::::::::::::::::::::::::::::::......................................................................................................:=+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%##############################################################################+*#########################################*********************************========+***************+========++=============================*******+++++**++++++++++++++++++=====================:::::::--::::::::::::::::::::::::::::------------------------:::::::::::::::::::::::::::::::::::::::::--:-: ................::::::::::::-------------------------------------------------::::::::::::::..........:::::::::::::::::::::............:::::::::::---------------------------::::::::..:::::::::::::..........:::::------------------------------------------------------::::::::::.............................................................................................................................................................:::::::::::::.............................................................................................................................................::---================================================================================+++++**********###############***+++=============================================+++++*****###########################################################################################################################################################################################################################################################################################################************#**########################################################################################################################################################################*************###########*************###############################################################################################################################**************************************##########################################**********#############***********************************************************************************######################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
..........................................................................................................................................::::::::::.............:::::::::......................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------========+++++++++++++++++++++++++++++++++++++++++++++==--:::..................................................................................................................................................                                                          ....:::---=====================---:::...................:::---==============================--:::...................................................................................................:::::::::::::::::::::::::::::::......::::---=========--------------:::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................:+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%#############################################################################++##########################################********************************+========+***************++=======+*============================+*****+++++++++++++++++++++++++++====================::::::::::::::::::::::::::::::::::::::------------------------::::::::::::::::::::::::::::::::::::::::-:--:.................::::::::::::-------------------------------------------------:::::::::::::...........:::::::::::::....::::............:::::::::::::--------------------------::::::::::::::::::::::...........:::::-----------------------------------------------------:::::::::...............................................................................................................................................................::::::::::::.............................................................................................................................................::---=================================================================================++++***********###############**+++==============================================+++++*****######################################################################################################################################################################################################################################################################################################********************#######################################################################################################################################################################*************###########*************###############################################################################################################################*************************************############################################*********#############**********************************************************************************#######################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
...........................................................................................................................................:::::::::..............::::::::......................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------========++++++++++++++++++++++++++++++++++++++++++++++==--:::....................................................................................................................................................                                                       .....:::---======================---:::.................:::---==============================---:::.....................................................................................................::::::::::::::::::::::::::::::....::::---=========----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%#############################################################################*+*##########################################********************************=========++***************++======+*+===========================***++++++++++++++++++++++++++++++===================-::::::::::::::::::::::::::::::::::::::------------------------:::::::::::::::::::::::::::::::::::::::::---: ...............:::::::::::--------------------------------------------------::::::::::::.............:::::::::::.......:.............::::::::::::::---------------------------:::::::::::::::::::::..........:::::----------------------------------------------------::::::::::................................................................................................................................................................:::::::::::.............................................................................................................................................::---=================================================================================+++++***********##############**+++================================================++++*****################################################################################################################################################################################################################################################################################################**************************######################################################################################################################################################################*************###########*************###############################################################################################################################************************************##############################################******###############*********************************************************************************########################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
............................................................................................................................................:::::::::.............::::::::..................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------=========+++++++++++++++++++++++++++++++++++++++++++++++==--:::...................................................................................................................................................... ......     .                                        .....:::---=======================---:::...............:::---===============================--:::.........................................................................................................::::::::::::::::::::::::::::..::::---==========---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%#############################################################################+*##########################################********************************+=========++****************++=====+*+==========================+**+++++++++++++++++++++++++++++++==================---:::::::::::::::::::::::::::::::::::::------------------------:::::::::::::::::::::::::::::::::::::::-:-:-.................::::::::::--------------------------------------------------::::::::::...............:::::::::::......................:::::::::::::----------------------------:::::::::::::::::::::.........:::::----------------------------------------------------:::::::::.................................................................................................................................................................::::::::::::............................................................................................................................................::---=================================================================================++++++***********#############***++=================================================+++++****#############################################################################################################################################################################################################################################################*###########################************************************##################################################################################################################################################################*************###########**************##############################################################################################################################***********************************#####################################################################*****************************************************************************###########################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
............................................................................................................................................::::::::::.............:::::::..............................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------=========+++++++++++++++++++++++++++++++++++++++++++++++++==--:::...............................................................................................................................................................   ...                                      .....:::---========================--:::...............::---===============================---:::..........................................................................................................:::::::::::::::::::::::::::::::::---==========--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%#############################################################################++###########################################********************************===========+*****************+=====+*+==========================**++++++++++++++++++++++++++++++++==================---:::::::::::::::::::::::::::::::::::::-----------------------::::::::::::::::::::::::::::::::::::::::::--:................::::::::::-------------------------------------------------:::::::::.................::::::::::.........................::::::::::::---------------------------:::::::::::---::::::::........:::::---------------------------------------------------:::::::.....................................................................................................................................................................:::::::::::............................................................................................................................................::--==================================================================================+++++++***********############***++==================================================+++++****############################################################################################################################################################################################################################################################***#####################****************************************##################################################################################################################################################################*************###########**************#############################################################################################################################***********************************######################################################################*******************************************************************#####################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
.............................................................................................................................................::::::::::............::::::::..............................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------==========+++++++++++++++++++++++++++++++++++++++++++++++++===--:::..........................................................................................................................................................................                                ......:::---========================---:::.............:::--================================--:::............................................................................................................:::::::::::::::::::::::::::::::---===========--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%#############################################################################*+*##########################################********************************+===========+*****************++====+*+=========================+*++++++++++++++++++++++++++++++++++==================---------::::::::::::::::::::::::::::::-----------------------::::::::::::::::::::::::::::::::::::::::::::................:::::::::::------------------------------------------------:::::::....................::::::::..............................::::::::------------------------------::::::::::::::::::::::.....:::::---------------------------------------------------:::::.......................................................................................................................................................................:::::::::::............................................................................................................................................::--==================================================================================++++++++++*********############**+++==================================================+++++****##########################################################################################################################################################################################################################################################*****###############**********************************************#################################################################################################################################################################*************###########**************###########################################################################################################################************************************#######################################################################**************************************************************##########################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
..............................................................................................................................................::::::::::...........::::::::.........................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------===========++++++++++++++++++++++++++++++++++++++++++++++++++===--:::...........................................................................................................................................................................                               .......::---=========================--:::............:::---===============================--::::.............................................................................................................:::::::::::::::::::::::::::::----===========---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%############################################################################*+*##########################################********************************+============+*****************++====++*=========================*++++++++++++++++++++++++++++++++++++++=======================--:::::::::::::::::::::::::::::-----------------------::::::::::::::::::::::::::::::::::::::::::::................::::::::::------------------------------------------------:::::......................::::::::.................................::::::-------------------------------::----------::::::::::..::::::---------------------------------------------------::::........................................................................................................................................................................:::::::::::............................................................................................................................................::--==================================================================================+++++++++++++******############**+++====================================================++++****#################################################################################################################################################################################################################**######################################******#########****************************************************################################################################################################################################################################*************###########**************########################################################################################################################**************************************########################################################################******************************************************##################################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
..............................................................................................................................................:::::::::::...........:::::::........................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------============+++++++++++++++++++++++++++++++++++++++++++++++++++===--:::............................................................................................................................................................................                             ........:::--=========================---::............:::--===============================---::...............................................................................................................::::::::::::::::::::::::::::----============---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%#############################################################################+*##########################################*********************************+============+******************++===+**========================+*+++++++++++++++++++++++++++++++++++++=========+++============--:::::::::::::::::::::::::::::----------------------::::::::::::::::::::::::::::::::::::::::::::.................:::::::::------------------------------------------------::::.......................::::::::...................................::::----------::::-:---------------------------::::::::::::::::::--------------------------------------------------::::..........................................................................................................................................................................:::::::::::...........................................................................................................................................::--===================================================================================++++++++++++++*****###########***++=====================================================++++*****###############################################################################################################################################################################################################***#####################################*********#*********************************************************################################################################################################################################################################*************###########**************####################################################################################################################*****************************************#########################################################################*********************************************############################################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
...............................................................................................................................................::::::::::...........:::::::.......................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------=============+++++++++++++++++++++++++++++++++++++++++++++++++++===--:::............................................................................................................................................................................                          ...........:::--==========================--:::..........:::--===============================---:::................................................................................................................::::::::::::::::::::::::::-----============---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%############################################################################++##########################################*********************************+==============+*****************+++===+*========================*+==++++++++++++++++++++++++++++++++++=========+++++============-:::::::::::::::::::::::::::::----------------------::::::::::::::::::::::::::::::::::::::::::-: ................::::::::-----------------------------------------------:::::.......................:::::::....................................::::--------:::::::::::::---------------------:::::::::::::::::::---------::---------------------------------------::::..........................................................................................................................................................................:::::::::::...........................................................................................................................................::--===================================================================================+++++++++++++++*****###########**++======================================================++++*****##############################################################################################################################################################################################################****###################################*********************************************************************###############################################################################################################################################################*************###########***************##########################################################################################################*************************************************##########################################################################******************************************###############################################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
................................................................................................................................................::::::::::...........:::::::....................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------==============++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::.............................................................................................................................................................................                   .................:::--===========================--:::........:::---===============================--:::.................................................................................................................:::::::::::::::::::::::::------============--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%############################################################################*=*########################################***********************************===============+********************+==**=======================+*===++++++++++++++++++++++++++++++++=========++++++++===========-:::::::::::::::::::::::::::::----------------------:::::::::::::::::::::::::::::::::::::::::::.................:::::::::----------------------------------------------::::........................::::::......................................::::------::::::::::::::::-------------------:::::::::::::::::::-----::::::::-------------------------------------:::...........................................................................................................................................................................::::::::::::..........................:::............................................................................................................:::--====================================================================================++++++++++++++******##########**++=============================================-==========++++****##############################################################################################################################################################################################################**####################################**********************************************************************##############################################################################################################################################################*************###########***************#####################################################################################################*****************************************************##########################################################################*************************************#####################################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++====================================================------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
.................................................................................................................................................::::::::::..........:::::::....................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------===============+++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::.............................................................................................................................................................................                ....................:::---==========================--:::........:::--===================++++========---::..................................................................................................................:::::::::::::::::::::::::-----=============--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%###########################################################################*+*########################################***********************************================+********************===+*=======================*+==++++++++++++++++++******+++++++++==++++++++++++++============-:::::::::::::::::::::::::::::----------------------::::::::::::::::::::::::::::::::::::::::::: ................::::::::----------------------------------------------::::........................:::::.......................................::::-----::::::::::::::::::::::::::------------::::::::::::::::::---::::::::::::---------------------------------::::...........................................................................................................................................................................::::::::::::::........................::::...........................................................................................................:::--====================================================================================+++++++++++++++******#########**++=========================================================++++****###################################################################################################################################################################################################################################################**********************************************************************##############################################################################################################################################################*************############**************###############################################################################################**********************************************************###########################################################################***********************************#######################################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
.................................................................................................................................................:::::::::::..........:::::::................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------=================++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::.............................................................................................................................................................................             .......................:::---===========================--::.......:::--==============++++++++++++======--:::..................................................................................................................:::::::::::::::::::::::::-----=============-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%###########################################################################++########################################***********************************==================*******************+===**======================+*===++++++++++++++++*********++++++++++++++++++++================-:::::::::::::::::::::::::::::----------------------::::::::::::::::::::::::::::::::::::::::::.................:::::::::---------------------------------------------::::........................::::........................................::::----::::::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::-------------------------------::::...........................................................................................................................................................................::::::::::::::........................::::...........................................................................................................:::--====================================================================================++++++++++++++++******########**+++=========================================================++++****#################################################################################################################################################################################################################################################************************************************************************#############################################################################################################################################################*************############***************##########################################################################################************************************************************#############################################################################******************************############################################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
..................................................................................................................................................:::::::::::.........:::::::............................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------==================+++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::.............................................................................................................................................................................             ........................::---===========================--:::......:::--=======+=+++++++++++++++++=====--:::...................................................................................................................:::::::::::::::::::::::::-----============-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::......................................................:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%###########################################################################+=########################################***********************************+==================+******************====+*======================*+==++++++++++++++++********=-:-+++++++++++=+++===================-:::::::::::::::::::::::::::::-----------------::--:::::::::::::::::::::::::::::::::::::::::::.................::::::::---------------------------------------------::::........................::::........................................::::----::::::.....:::::::::::::::::::::::::::::::::::::::::::-::::::::::::::::::::-----------------------------:::::............................................................................................................................................................................:::::::::::::.......................::::::..........................................................................................................::---=====================================================================================++++++++++++++++******#######***++============================================-=============++++****################################################################################################################################################################################################################################################************************************************************************#############################################################################################################################################################*************############***************######################################################################################***************************************************************##############################################################################************************##################################################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
...................................................................................................................................................::::::::::.........:::::::........................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------===================++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::..................................................................................................................................................................................   .............................::---===========================---::.....:::--=====+++++++++++++++++++++++===---::....................................................................................................................:::::::::::::::::::::::::-----============------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------:::::.....................................................:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%##########################################################################*=*###*##*#######**######################************************************+===================+****+************+====**=====================+*+=+++++++++++++++*********-::::=++++++===========================:::::::::::::::::::::::::::::::-----------------:::::::::::::::::::::::::::::::::..::::::::::.................:::::::::--------------------------------------------:::..........................::.........................................::::----::::::...........::::::::::::::::::::::::::::::::::::::::::-::::::::::::::::----------------------------:::::............................................................................................................................................................................:::::::::::::.......................::::::..........................................................................................................::---======================================================================================++++++++++++++++******######***++============================================================+++****###############################################################################################################################################################################################################################################*************************************************************************############################################################################################################################################################*************############***************######################################################################################************************************************************################################################################################*********************#######################################################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
...................................................................................................................................................:::::::::::........:::::::........................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------====================++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::.................................................................................................................................................................................    .............................:::--============================--:::...:::--=====+++++++++++++++++++++++====--:::....................................................................................................................:::::::::::::::::::::::::-----============------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------::::.....................................................=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%##########################################################################*++#*##*#**##******######################************************************+===================+******************+====+*=====================++==+++++++++++++++*******+-:::::=+++++===========================-::::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::::::::::: ::::::::::. ...............::::::::::------------------------------------------::::..........................:..........................................::::----:::::...............:::::::::::::::::::::::-:::::::::::--::-::::::::::::::::::--------------------------:::::............................................................................................................................................................................::::::::::::::......................::::::..........................................................................................................::--=======================================================================================+++++++++++++++++******#####***++=============================================================+++****##############################################################################################################################################################################################################################################*************************************************************************############################################################################################################################################################*************############***************##################################################################################***************************************************************################################################################################*******************##########################################################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
....................................................................................................................................................:::::::::::.......::::::::.....................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::..................................................................................................................................................................................................................:::--============================--:::::::::--====++++++++++++++++++++++++===--:::....................................................................................................................::::::::::::::::::::::::::-----============-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------::::.....................................................+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%###########################################################################++#*##**#**************#################************************************+====================+******************+====+*====================+*+=+++++++++++++++*******+-:-=+++++++=============================::::::::::::::::::::::::::::::::-------:-:::::::::::::::::::::::::::::::::::::::: .::::::::::.................::::::::::-----------------------------------------::::..........................:..........................................:::::---:::::..................::::::::::::::::::::-:::::::::::--:--::::::::::::::::::-------------------------::::::............................................................................................................................................................................::::::::::::::......................::::::..........................................................................................................::--========================================================================================+++++++++++++++++*****#####***++==============================================================++++***#############################################################################################################################################################################################################################################*************************************************************************############################################################################################################################################################*************############***************##############################################################################***************************************************************####################################################################################****************#############################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
.....................................................................................................................................................::::::::::::.....::::::::..................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------=========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::..................................................................................................................................................................................................................:::--=============================--:::::::--====+++++++++++++++++++++++++===--:::....................................................................................................................:::::::::::::::::::::::::::----============-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------:::....................................................:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%##########################################################################*=*####*#******************#############*************************************====================++******************+====**====================*+++++++++++++++++*******+--+++++++++=============================-:::::::::::::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::: ::::::::::: ...............::::::::::-----------------------------------------::::......................................................................:::::--::::.....................:::::::::::::::::::::---::::::--::-::::::::...:::::::::--------------------:::::::::............................................................................................................................................................................::::::::::::::......................::::::..........................................................................................................::--=========================================================================================++++++++++++++++*****######**++===============================================================++++****###########################################################################################################################################################################################################################################*************************************************************************############################################################################################################################################################*************############****************###########################################################################**************************************************************#######################################################################################*************################################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
......................................................................................................................................................::::::::::::.....:::::::..................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------===========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++====--:::...................................................................................................................................................................................................................::---===================++=======--::::::--====++++++++++++++++++++++++++===-:::.....................................................................................................................:::::::::::::::::::::::::::----============----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------:::....................................................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%##########################################################################*++##*#*##********************#########**************************************+=================++++*****+*************+====**===================+*++++++++++++++++*******++++++++++++==============================-::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::: .::::::::::.................::::::::::----------------------------------------::::......................................................................:::::---:::.........................::::::::::::::::::::--------::-:::::::......::::::::---------------:::::::::::::.............................................................................................................................................................................:::::::::::::.....................:::::::..........................................................................................................::--==========================================================================================++++++++++++++++*****#####**++=====================================================-===========++++****#########################################################################################################################################################################################################################################*************************************************************************############################################################################################################################################################*************############****************###############################################################***********************************************************************##########################################################################################**********####################################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
.......................................................................................................................................................:::::--::::::...::::::::..............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--:::...................................................................................................................................................................................................................::---==================++++++====----::----===++++++++++++++++++++++++++===--:::....................................................................................................................::::::::::::::::::::::::::::----============----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------:::....................................................=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%##########################################################################++*#*#*************************#######**************************************+================++++++*******************+====*+===================*++++++++++++++++*******++++++++++++==============================--::::::::::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::: .:::::::::: ...............:::::::::::---------------------------------------::::......................................................................::::::-:::::...........................::::::::::::::::::::-----::-:::::::.......:::::::::-----------::::::::::::::::............................................................................................................................................................................:::::::::::::.....................::::::::.........................................................................................................::--===============================================================================================++++++++++++****#####**++=====================================================-============++++*****#######################################################################################################################################################################################################################################*************************************************************************############################################################################################################################################################*************############****************################################################************************************************************************************#############################################################################################******#######################################################################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
.......................................................................................................................................................:::::---::::::::::::::::...........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------=============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::...................................................................................................................................................................................................................:::--===============+++++++++=====-------====+++++++++++++++++++++++++++===-:::...................................................................................................................::::::::::::::::::::::::::::::----============----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------::::....................................................+%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%##########################################################################*=*#*#**#************************#####***************************************+==============++++++++*****+*************+====*+==================+*+++++++++++++++*******+++++++++++++===============================-::::::::::::::::::::::::::::::::---:::::::::::::::::::::::::::::::::::::.....::. ::::::::::................:::::::::::---------------------------------------::::......................................................................::::::-:::::..............................::::::::::::::::::::::::::::::::........:::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................................................::::::::::::.....................::::::::.........................................................................................................::--=================================================================================================+++++++++++****####**++====================================================================++++******####################################################################################################################################################################################################################################*************************************************************************############################################################################################################################################################*************############****************####################################**********************************************************************************************#############################################################################################################################*****##########################################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
........................................................................................................................................................::::---::::::::::::::::.........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------==============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::...................................................................................................................................................................................................................:::--=============++++++++++++=====-----====++++++++++++++++++++++++++++==--::...................................................................................................................:::::::::::::::::::::::::::::::----============----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------::::................:::::::::::.........................*@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%#########################################################################*=*####*#************************####****************************************+============++++++++++*****++************+=====*+==================*++++++++++++++++******+++++++++++++===============================-:::::::::::::::::::::::::::::::::---:::::::::::::::::::::::::::::::::::.......:. .::::::::::................:::::::::::--------------------------------------::::......................................................................::::::::::::.................................::::::::::::::::::::::::::::...........:::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................................................................................::::::::::::.....................::::::::.........................................................................................................::--==================================================================================================++++++++++****####***+========================================================----=-=======+++++******##################################################################################################################################################################################################################################**************************************************************************###########################################################################################################################################################*************############****************#################################*************************************************************************************************############################################################################################################################*******#########################################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
........................................................................................................................................................:::::----:::::::::::::::........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------===============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::....................................................................................................................................................................................................................:::--===========+++++++++++++++=============+++++++++++++++++++++++++++===-:::.................................................................................................................:::::::::::::::::::::::::::::::::----============---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::...............::::::::::::::......................:#@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%##########################################################################++##*#*###*******************************************************************=============++++++++++*****++************+====+*+=================+*+++++++++++++++*****+++++++++++++++==============================-::::::::::::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::..    .::. :::.::::::.........:.......:::::::::---------------------------------------::::.......................................................................::::::::::......................................::::::::::::::::::::::::............::::::::::::::::::::::::::::::::::::::::::::::::::::..::.....................................................................................................................................................::::::::::::.....................::::::::.........................................................................................................::--====================================================================================================++++++++****####***+========================================================-----==========+++++*******###############################################################################################################################################################################################################################************************************************************************#############################################################################################################################################################*************############*****************###########################*****************************************************************************************************############################################################################################################################********################################################################****######################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
.........................................................................................................................................................::::-----::::::::::::::......................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------=================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::.....................................................................................................................................................................................................................::--==========+++++++++++++++++==========+++++++++++++++++++++++++++++==--::..................................................................................................................:::::::::::::::::::::::::::::::::----============---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::...............::::::::::::::::....................-%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%##########################################################################++*###*###*******************************************************************+===========+++++++++++*****+++************+====+*+=================*+=++++++++++++++****+++++++++++++++===============================-::::::::::::::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::..     .:. .::..::::::........:.......::::::::::--------------------------------------:::........................................................................::::::::::..........................................:::::::::::::::::::................::::::::::::::::::.........:::::::::::::::::::::::::::::...................................................................................................................................................:::::::::::.....................::::::::........................................................................................................:::--====================================================================================================+++++++++***####***++====================================================------------========+++++******###############################################################################################################################################################################################################################***********************************************************************#############################################################################################################################################################*************############*****************#######################*********************************************************************************************************############################################################################################################################*********############################################################*******######################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
.........................................................................................................................................................:::::-----:::::::::::::....................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------==================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--:::.....................................................................................................................................................................................................................::--==========++++++++++++++++++========+++++++++++++++++++++++++++++===-:::................................................................................................................:::::::::::::::::::::::::::::::::::---=============---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::..............::::--------:::::::.................:+@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%#############################################%###########################*=**##*####******************************************************************+==========+++++++++++++*****++*************=====+*+================+*+=++++++++++++++**+++++++++++++++++==============================--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..      .:. .:. ::::::........:........:::::::::--------------------------------------:::........................................................................::::::::::.............................................:::::::::::::::........................:::::......................:::::::::::::::::::::::::::...............................................................................................................................................::::::::::.....................::::::::........................................................................................................:::--====================================================================================================+++++++++***####***++==================================================---------------=========+++++******#############################################################################################################################################################################################################################**********************************************************************##############################################################################################################################################################*************############******************###############***************************************************************************************************************#############################################################################################################################*********###########################################################********######################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
..........................................................................................................................................................:::::-----:::::::::::::.............................::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--:::.....................................................................................................................................................................................................................:::--=======++++++++++++++++++++++====+++++++++++++++++++++++++++++++==--::................................................................................................................::::::::::::::::::::::::::::::::::::---=============---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::.............::::-----------:::::::..............:=*@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%##########################################################################=+##########***************************+++***********************************==========+++++++++++++*****+++************+=====+*=================*+=++++++++++++++**+++++++++++++++++===============================--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..      .:.  :: .::::::.......::.......::::::::::-------------------------------------:::.........................................................................:::::::::................................................:::::::::::........................................................::::::::::::::::::::::::::::...........................................................................................................................................:::::::::.....................::::::::........................................................................................................::---=====================================================================================================++++++++****####**++================================================-------------------=========+++++******###########################################################################################################################################################################################################################**********************************************************************##############################################################################################################################################################*************############*******************#########*******************************************************************************************************************##############################################################################################################################*********########################################################***********######################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++=====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
..........................................................................................................................................................:::::------:::::::::::::...........................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------====================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::.....................................................................................................................................................................................................................:::--=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.................................................................................................................::::::::::::::::::::::::::::::::::::---=============---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------::::......::...:::::--------------::::::::::::......-=+#@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%#############################################%###########################++###########**************************+==++*********************************+=========++++++++++++++*****++++***********+=====**================+*+=+++++++++++++++++++++++++++++++++===============================-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::...      .:. .:. ::::::. ......:........:::::::::------------------------------------::::..........................................................................::::::::......................................................................................................................::::::::::::::::::::::::::::::......................................................................................................................................:::::::::.....................::::::::........................................................................................................::---======================================================================================================+++++++****####**++================================================----------------------========++++++*****#########################################################################################################################################################################################################################*********************************************************************###############################################################################################################################################################*************############***********************************************************************************************************************************************##############################################################################################################################**********################################################******************######################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
...........................................................................................................................................................:::::------::::::::::::..........................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------=======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::......................................................................................................................................................................................................................::--=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::.................................................................................................................:::::::::::::::::::::::::::::::::::----=============---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------:::::..::::::::::::::---------------:::::::::::::-==++++%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%#############################################%###########################*+*##########**************************+====+++******************************+=========+++++++++++++++*****+++***********+=====+*+================**==++++++++++++++++++++++++++++++++===============================-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::...      .::  .: .::::::. .....:........:::::::::------------------------------------::::...........................................................................::::::...........................................................................................................................::::::::::::::::::::::::::::::..................................................................................................................................:::::::::.....................::::::::........................................................................................................::--=======================================================================================================+++++++****####**++==============================================-------------------------=========+++++******#######################################################################################################################################################################################################################********************************************************************#################################################################################################################################################################************############**********************************************************************************************************************************************###############################################################################################################################**********#########################################*************************######################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++====================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
............................................................................................................................................................:::::------:::::::::::........................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------=========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::......................................................................................................................................................................................................................::---====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.................................................................................................................::::::::::::::::::::::::::::::::::::----=============---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------::::::::::::::::::::--------------------::::::-=*%%@@%*+%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%########################################################################*+*##########**************************+=======++*****************************======++++++++++++++++++******+++***********+=====+*+===============+*+++++++++++++++++++++++++++++++++++==============================-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....:::...       .:.  :. ::::::: ...............:::::::::-----------------------------------::::.............................................................................::.....................................................................................................................................::::::::::::::::::::::::::::............................................................................................................................:::::::::.....................::::::::........................................................................................................::--========================================================================================================+++++++***####**++============================================-----------------------------=========+++++******#####################################################################################################################################################################################################################*******************************************************************##################################################################################################################################################################************############*********************************************************************************************************************************************################################################################################################################################**********##################################********************************######################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
.............................................................................................................................................................:::::------:::::::::::.....................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------=======================================+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---::.......................................................................................................................................................................................................................:::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::................................................................................................................:::::::::::::::::::::::::::::::::::::----=============---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------::::::::::::::::::--------------------------:=*%@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%#############################################%###########################++##########**************************+=========+****************************+==++++++++++++++++++++++*****+++++**********++====+*+===============+*=+++++++++++++++++++++++++++++++++==============================-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......::....      .::  .. .::::::................:::::::::-----------------------------------::::........................................................................................................................................................................................................................::::::::::::::::::::::::::..........................................................................................................................:::::::::.....................:::::::::.......................................................................................................::--========================================================================================================+++++++****###**++============================================-------------------------------=========+++++******###################################################################################################################################################################################################################******************************************************************###################################################################################################################################################################*************##########********************************************************************************************************************************************##################################################################################################################################**********##############################************************************######################*************************************************************##############****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
.............................................................................................................................................................::::::-------:::::::::.....................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------==========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::........................................................................................................................................................................................................................::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.................................................................................................................:::::::::::::::::::::::::::::::::::::----============----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------::::::::-----------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%####################%%%%############################################%###########################++*#*#########************************+==========+***************************+++++++++++++++++++++++++******++++***********++=+=++*===============+*+++++++++++++++++++++++++++++++++++=======================--====-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...   ........     ..::.  .  :::::::................::::::::-----------------------------------::::..........................................................................................................................................................................................................................:::::::::::::::::::::::::::.......................................................................................................................:::::::::....................::::::::::.......................................................................................................::--=========================================================================================================++++++****###**++=========================================------------------------------------=========+++++*****###################################################################################################################################################################################################################*****************************************************************####################################################################################################################################################################************#########*******************************************************************************************************************************************###################################################################################################################################***********######################********************************************######################**********************************************************##################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++===================================================---------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
..............................................................................................................................................................::::::-------::::::::...................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------==========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--:::........................................................................................................................................................................................................................:::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.................................................................................................................:::::::::::::::::::::::::::::::::::::----============----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------::::::------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%#####################%%%########################################################################*+*############************************==========+***************************+++++++=++++++++++++++++++******+++++**********++++=+*+===============+*=+++++++++++++++++++++++++++++++++=======================---===-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::...    .........    ..:::  .  .::::::. ..............::::::::--:--------------------------------::::..............................................................................................................................................................................................................................::::::::::::::::::::::::......................................................................................................................:::::::::....................::::::::::.......................................................................................................::--===========================================================================================================+++++********++===---===================================--------------------------------------========+++++******#################################################################################################################################################################################################################*****************************************************************##################################################################################**#################################################################################***********########******************************************************************************************************************************************#####################################################################################################################################***********################**************************************************######################********************************************************#####################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++===================================================---------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
...............................................................................................................................................................:::::--------::::::::................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--:::.........................................................................................................................................................................................................................::--===++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::...................................................................................................................:::::::::::::::::::::::::::::::::::::----============----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------:::::------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%####################%%%#############################################%##########################*++#############***********************+=========+*+**********+++*************++++++=+++++++++++++++++++*****+=+++***********++++=+*+==============+*+++++++++++++++++++==++++++++++++++======================----==-::::::::::::::::::::::::::::::::::::::::::::::::::::::::....     ........   ....::.    .:::::::...............:::::::::-:--------------------------------::::....................................................................................................................................................................................................................................:::::::::::::::::::::...................................................................................................................:::::::::....................:::::-::::......................................................................................................:::--============================================================================================================+++++*******++==-----=================================----------------------------------------=========+++++******################################################################################################################################################################################################################****************************************************************##########################################################******################********############################################################################**********************************************************************************************************************************************************#########################################################################################################################################***********############******************************************************######################***************************************************############################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++====================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
................................................................................................................................................................:::::--------:::::::...............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::.........................................................................................................................................................................................................................::---==+++++++++++++++++++++++++++++++++++++++++++++++++++===--:::....................................................................................................................:::::::::::::::::::::::::::::::::::::----============---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------:::------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%#####################%%%############################################%###########################++*#############**********************+==========+++*+++++++++++++***********++++++++++++++++++++++++++******++++***+***+***+++++=+*===============**=+++++++++++++++=====+++++++++++++=======================----==-:::::::::::::::::::::::::::::::::::.:::::::::::::::::......      .............::::     .::::::. ..............::::::::----------------------------------::::......................................................................................................................................................................................................................................::::::::::::::::::::::................................................................................................................::::::::::...................::::--::::......................................................................................................:::--=============================================================================================================+++++*****++===------================================------------------------------------------=========+++++******##############################################################################################################################################################################################################****************************************************************######################################################*************##########***********############################################################################********************************************************************************************************************************************************###########################################################################################################################################************##########*******************************************************######################***********************************************#################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++===================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
................................................................................................................................................................::::::--------:::::::...........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------=============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---:::..........................................................................................................................................................................................................................::--===+++++++++++++++++++++++++++++++++++++++++++++++++===--:::......................................................................................................................::::::::::::::::::::::::::::::::::::----============---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%@%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%#####################%%%########################################################################++*#############**********************+==========++++++++++++++++++**********++++++++++++++++++++++++++*******++++**++**+****++++=+*+============+=+*+++++++++++++++========+++++++++++========================----==-:::::::::::::::::::::::::::::::.::..::::::::::::::.........     ............:::::.    .:::::::...............::::::::----------------------------------::::.......................................................................................................................................................................................................................................:::::::::::::::::::::::::............................................................................................................::::::::::...................::::--::::......................................................................................................:::--================================================================================================================++++++++===---------==============================--------------------------------------------=========+++++*****##############################################################################################################################################################################################################**************************************************************#####################################################****************#######**************##########################################################################*******************************************************************************************************************************************************#############################################################################################################################################************#########********************************************************#######################******************************************#####################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++==================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
.................................................................................................................................................................::::::-------:::::::........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------==============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====---:::..........................................................................................................................................................................................................................:::-===++++++++++++++++++++++++++++++++++++++++++++++++===--:::.......................................................................................................................::::::::::::::::::::::::::::::::::::---=============---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%##%%%%%%@%%%%%%#########%%%%%%%%%%%%%%%%%%%%%#####################%%%############################################%##########################*+*##############*********************++=========+*++++++++++++++++++********+++++++++++++++++++++++++++*******+++++*++++****+++++++*+============+=**+++++++++++++==========+++++++++++========================---===-::::::::::::::::::::::::::::::..:............::......:::..      .........::::::::     .::::::................:::::::----------------------------------::::........................................................................................................................................................................................................................................::::::::::::::::::::::::::::........................................................................................................::::::::::.........:.........::::--::::......................................................................................................::---===================================================================================================================++++===------------===========================-----------------------------------------------=========+++++*****#############################################################################################################################################################################################################***********************************************************######################################################*******************####**************##########################################################################******************************************************************************************************************************************************###############################################################################################################################################************#########********************************************************#######################*****************************************######################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++==================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
..................................................................................................................................................................::::::-------:::::::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------===============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::...........................................................................................................................................................................................................................::--==+++++++++++++++++++++++++++++++++++++++++++++++==---:::........................................................................................................................:::::::::::::::::::::::::::::::::::----=============---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%###%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%#####################%%%############################################%##########################*++*##############********************++=========+*+++++++++++++++++++++++****++++++++++++++++++++++++++*******+++++*+++++++++++++=+*++===========+=+*+++++++++++++============+++++++++=======================------=--:::::::::::::::::::::::::::::....................:::::::.       ........::::::::.    .:::::::...............::::::::---------------------------------::::........................................................................................................................................................................................................................................:::::::::::.....::::::::::::::::....................................................................................................::::::::::.........::........::::--::::......................................................................................................::---========================================================================================================================-----------------========================------------------------------------------------==========++++++****###########################################################################################################################################################################################################**********************************************************######################################################**************************************######################################################################******************************************************************************************************************************************************###################################################################################################################################################*************#########*******************************************************#######################****************************************######################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++==================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
...................................................................................................................................................................::::::------:::::::::...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====---::::...........................................................................................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++===--:::.........................................................................................................................:::::::::::::::::::::::::::::::::::----=============--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%###%%%%%#%@%%%%#########%%%%%%%%%%%%%%%%%%%%%%#####################%%%############################################%###########################++*###############*******************++=========+*+++++++++++++++++++++++****+++++++++++++++++++++++++++*******+++*+*++**++++++++=++*+=======+==+=++**+=++++++++++============+++++++++======================--=-----=-::::::::::::::::::::::::::::::........    ....::::::::::..      ........:::::::::     .::::::...............:::::::::--------------------------------::::.......................................................................................................................................................................................................................................:::::::::::..........::::::::::::::..................................................................................................::::::::::.........::........::::--::::......................................................................................................::---===============================================================================================================----------------------------=====================---------------------------------------------------===========+++++***##########################################################################################################################################################################################################*********************************************************#######################################################*************************************#################################################################**********************************************************************************************************************************************************#####################################################################################################################################################*************#########*******************************************************#######################***************************************######################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++==================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
...................................................................................................................................................................:::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------=================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======----:::.............................................................................................................................................................................................................................::--===++++++++++++++++*++++++++++++++++++++++++++===--:::........................................................................................................................:::::::::::::::::::::::::::::::::::::----==============--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%######%%##%#%%%%%%#%%%###%%%%%%%@%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%#######################################################################*+*###############*******************+++========+*+++++++++++++++++++++++****+++++++++++++++++++++++++++********++++++++++++++++++=+**+=+=========+++*++++++++++++=============++++++++=====================-=--=-------::::::::::::::::::::....:....:......      ..:::::::::::..      ........:::::::::.    .:::::::...............::::::::--------------------------------::::.......................................................................................................................................................................................................................................::::::::::..............:::::::::::::::..............................................................................................::::::::::.........::........::::--::::......................................................................................................::---==============================================================================================================----------:::::----------------=----------======--------------------------------------------------------==========++++****#################################################***#####################################################################################################################################################******************************************************########################################################************************************###########################################################******************************************************************************************************************************************##**##########################################################################################################################################################################*************#########*******************************************************######################***************************************####################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++==================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
....................................................................................................................................................................::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------==================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========---::::..............................................................................................................................................................................................................................::--==++++++++++++++++++++++++++++++++++++++++++===--:::.........................................................................................................................:::::::::::::::::::::::::::::::::::::----==============--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%######%%##%%%%%%%%##%%###%%%%%%%@%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%############################################%##########################*++################******************++++========+++++++++++=++++++++++++*****+++++++++++++++++++++++++++********++++++*++++++++++=++*+=+=+=======+++**+++++++++++==============+++++++=====================-----=------::::::::::::::::....................      ..:::::::::::..      ........::::::::::     :::::::...............::::::::--------------------------------::::.......................................................................................................................................................................................................................................:::::-::::................::::::::::::::::...........................................................................................::::::::::........:::........::::--::::......................................................................................................::---==============================================================================================================---:::::::::::::----------------------------====----------------------------------------------------------==========+++****##############################################********##################################################################################################################################################*****************************************************########################################################************************************########################################################************************************************************************************************************************************########################################################################################################################################################################################*************##########******************************************************######################****************************************#################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++==================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
.....................................................................................................................................................................:::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========-----::::..............................................................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++===--:::..........................................................................................................................::::::::::::::::::::::::::::::::::::-----==============--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%#######%%%##%%%%%%###%%###%%%%%%%@%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%###########################################%##########################*++*################*****************++++++======+++++++++++-=++++++++++++****+++++++++++++++++++++++++++*********++++++++++++++++=+=+*+++++++====++++*++++++++++++=============+++++++=====================-----==-----::::::::::::::......................      ..:::::::::::..     .........::::::::::.    .:::::::..............::::::::--------------------------------::::......................................................................................................................................................................................................................................::::---:::.....................:::::::::::::::........................................................................................::::::::::........::::.......::::--::::......................................................................................................::--===============================================================================================================---:::::::::::::------------------------------------------------------------------------------------------------======+++***############################################***********################################################################################################################################################*****************************************************######################################################************************************##################################################*******************************************************************************************************************************####################################################################################################################################################################################################**************##########******************************************************######################*****************************************#############################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++=================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
.....................................................................................................................................................................::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++=============------::::...............................................................................................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++==--:::.......................................................................................................................::::::::::::::::::::::::::::::::::::::::----===============-------::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%########%%###%%%%%##%%####%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%###########################################%###########################++*################******************+++++======+*+++++++++=-=+++++++++++*****++++++++++++++++++++++++++**********+++++++++++**++++++*+=+=++++++==+++**+++++++++++==============++++++====================------===----::::::::::::.......................       ...:::::::::::..   .........::::::::::::    .:::::::...............:::::::::------------------------------:::.......................................................................................................................................................................................................................................::::---:::........................:::::::::::::::.....................................................................................::::::::::.......:::::.......::::---:::......................................................................................................::--===============================================================================================================--::::.....::::::--------------------------------------------------------------------------------------------------====+++***###########################################************###############################################################################################################################################**************************************************######################################################**************************************########################################*************************************************************************************************************************##*##############################################################################################%%%%%%%#############################################################################################################**************###########*****************************************************######################******************************************########################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++==================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
......................................................................................................................................................................::::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------=======================================================++++++++++++++++++++++++++++++++++++++++++++++++++=============-------:::::................................................................................................................................................................................................................................:::--==++++++++++++++****+++++++++++++++++++==--:::......................................................................................................................::::::::::::::::::::::::::::::::::::::::::----===============-------::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%########%%##%%%%####%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%#########################################%##########################*++################******************++++++=====+*+++++++++=--=+++++++++***********************++++++++++*********+++++++++++**+++++++*++=+++++====+++*+++++++++++==============++++++===================-------===----::::::::::::.......................       .....:::::::::..............::::::::::::.    .:::::::..............::::::::::-----------------------------:::.......................................................................................................................................................................................................................................:::----:::..........................:::::::::::::::...................................................................................::::::::::.......::::::......:::----:::......................................................................................................::--===============================================================================================================--::::......:::::--------------------------===-----------------------------------------------------------------------===+++****#########################################************###############################################################################################################################################**************************************************#######################################****************************************************#################################***********************************************************************************************************************########################################################################################################%%%%%%%%%%%############################################################################################################**************###########*****************************************************######################*******************************************#####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++=================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
......................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------=======================================================++++++++++++++++++++++++++++++++++++++++++++++++++=============-------::::::.................................................................................................................................................................................................................................::--===+++++++++++******++++++++++++++++++==--:::......................................................................................................................:::::::::::::::::::::::::::::::::::::::::::----===============--------::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%########%%##%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%########################################%##########################*++*###############******************++++++=====+*+++++++++=---=+++++++*************************+++++++++**********+++++++*++**++++++=**+++++++====+++**++++++++++===============+++++==================--------===---::::::::::...........................      .......:::::::..............:::::::::::::     :::::::. ............:::::::::::---------------------------::::.......................................................................................................................................................................................................................................:::----:::.............................:::::::::::::::................................................................................:::::::::::......::::::......:::----:::......................................................................................................::--===============================================================================================================--:::.......::::::------------------------====-----------------------------------------------------------------------====+++****#########################################************##############################################################################################################################################*****************************************************###################********************************************************************##############################**********************************************************************************************************************##########################################################################################################%%%%%%%%%%%%%%############################################################################################################***************##########*****************************************************#######################*******************************************###################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++=================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
.......................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------=========================================+++============+++++++++++++++++++++++++++++++++++++++++++++++++++===========--------:::::::..................................................................................................................................................................................................................................::--==++++++++++********+++++++++++++++===--:::....................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::-----===============--------::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%########%%##%%%####%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%#######################################%##########################*++*###############******************++++++=====++++++++++++-----+++++**************************+++++++++***********++++++*****+++++=++*++++++======+++*++++++++++===============+++++=================---------===----:::::...............................      ...::::::::::::...:::......::::::::::::::.    .:::::::..............::::::::::---------------------------::::......................................................................................................................................................................................................................................:::-----:::..............................:::::::::::::::::.............................................................................:::::::::::.....:::::::......:::----::::....................................................................................................::---===============================================================================================================---:::......::::::----------------------------------------------------------------------------------------------------====+++****#########################################***********#############################################################################################################################################*********************************************************************************************************************************************############################********************************************************************************************************************######################################################################################%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%###########################################################################################################***************##########*****************************************************#######################********************************************#################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
......................................................................................................................................................................::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------========================================+++++============+++++++++++++++++++++++++++++++++++++++++++++++==============---------:::::::..................................................................................................................................................................................................................................:::--==+++++++++*********+++++++++++++===--:::.....................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::----================--------:::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------+@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%#########%##%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%#######################################%##########################+++###############******************++++++======+**++++++++=----=+++****************************++++++++***********++++++*****+++++++++*+++++=======++**+++++++++===============+++++=================---------===----::::................................      ..::::::::::::::::::::::..::::::::::::::::    .:::::::. ............:::::::::::--------------------------::::......................................................................................................................................................................................................................................:::-----:::..............................:::::::::::::::::::...........................................................................:::::::::::.....:::::::......:::----::::....................................................................................................::---===============================================================================================================---:::.......:::::----------------------------------------------------------------------------------------------------====++++****#########################################**********#############################################################################################################################################*********************************************************************************************************************************************############################***************************************************************************************************************############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################***************##########*****************************************************#######################*************************************************###########*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
........................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------========================================++++++++==========++++++++++++++++++++++++++++++++++++++++++++++++===========------------::::::....................................................................................................................................................................................................................................::--==+++++++++*******++++++++++++++===--:::....................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::----================---------::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------#@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%##############%%%####%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%#######################################%##########################*++*#################***************+++++++=====+*+++++++++=----=+++*****************************+++++++************++++********+++++++++++++========++*++++++++++==============+++++================----------===----::::................................      ..::::::::::::::::::::::::::::::::::::::::.    .:::::::.............::::::::::::--:----------------------::::......................................................................................................................................................................................................................................:::-----::...............................::::::::::::::::::::..........................................................................:::::::::::....:::::::::....::::----::::....................................................................................................::---===============================================================================================================---::::.....::::::-----------------------------------------------------------------------------------------------------====++++****#########################################*********###########################################################################################################################################************************************************************************************************************************************************#*****####################***********************************************************************************************************##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################***************##########*****************************************************######################*******************************************************#####**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++===============================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
.....................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------=======================================++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++============-----------::::::::....................................................................................................................................................................................................................................:::--=+++++++++********++++++++++++===--::::...................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::----================---------::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------=%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%##########%##%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%#######################################%##########################*++*#################***************+++++++=====+++++++++++=----=+++****************#####*********+++++++***********+++*********++++===+++++==========+*++++++++++==============+++++================-----------=-----::::... .............................     ..::::::::::::::::::::::::::::::::::::::::.    .:::::::. ...........::::::::::::--:----------------------::::......................................................................................................................................................................................................................................:::----:::...............................:::::::::::::::::::::::.......................................................................:::::::::::....:::::::::....::::----::::....................................................................................................::---================================================================================================================---:::.....::::::-----------------------------------------------------------------------------------------------------=====++++*****########################################********#####################################################################################################################################******************************************************************************************************************************########************************###################********************************************************************************************************###########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################***************##########*****************************************************#######################********************************************************###************#*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++===============================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
...................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------========================================++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++===============-----------::::::::....................................................................................................................................................................................................................................:::--==++++++++********+++++++++++==---:::...................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::-----================----------:::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------+@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%#########%%##%%##%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%######################################%##########################*+++##################**************++++++++====+++*+++++++=----=+++***************#######*********+++++++**********+++**********++======+++==========++*+++++++++==============+++++================----------==-----:::::.    ...........................    ...:::::::::::::::::::::::::::::::::::::::::     ::::::::............:::::::::::::-:----------------------::::......................................................................................................................................................................................................................................:::----:::..............................::::::::::::::::::::::::::.....................................................................:::::::::::....:::::::::....::::----::::....................................................................................................::---================================================================================================================---:::::..:::::::------------------------------------------------------------------------------------------------------======+++*****########################################*******#####################################################################################################################****##********************************************************************************************************************************##########################****************##################***************************************************************************************************##############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################***************##########****************************************************########################*********************************************************#************##**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++===============================================----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
..................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------========================================+++++++++++++++===++++++++++++++++++++++++++++++++++++++++++++++=================-----------::::::::....................................................................................................................................................................................................................................:::--==++++++++*********+++++++++===--:::..................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::----=================-----------::::::::::::::::::--:::::::::::::--------------------------------------------------------------------------------------=-==-*@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%##%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%#%%#######################################%##########################+++*#################***************+++++++====+++**+++++++-----=+++*************###***###*********++++++***********++**********+====================++*+++++++++=============++++++================----------===----:::::.    ............................   ...:::::::::::::::::::::::::::::::::::::::::     .:::::::. ...........::::::::::::-----------------------:::::......................................................................................................................................................................................................................................::-----:::..............................::::::::::::.::::::::::::::::..................................................................:::::::::::...:::::::::::...::::----::::....................................................................................................::--==================================================================================================================---:::::::::::::------------------------------------------------------------------------------------------------------=======+++*****#########################################*****#######################################################################################################*************************************************************************************************************************************############################################*************###################*******************************************************************************************####################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################***************#########*****************************************************########################*********************************************************************####*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++===============================================----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
..................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------=======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================-----------::::::....................................................................................................................................................................................................................................:::-===++++++++*********+++++++++==--:::..................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::-----=================------------::::::::--------------:::::::---------------------------------------------------------------------------------------=-=====#@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%#########%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%#%%#######################################%##########################*++*##################**************+++++++====+++**++++++=------==+*************###*****###********++++++**********++**********+=====================++*++++++++============+++++++===============-----------====---:::::.     .................................:::::::::::::::::::::::::::::::::::::::::      ::::::::............::::::::::::-----------------------:::::......................................................................................................................................................................................................................................::-----::..............................::::::::::::.......::::::::::::::...............................................................:::::::::::...:::::-:::::..:::::----::::....................................................................................................::--===================================================================================================================---::::::::::::--------------------------------------------------------------------------------------------------------======++++****################################################################################################################################################********************************************************************************************************************************#######################################################***********#####################***********************************************************************************##########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################**************##########*****************************************************########################*********************************************************************#####************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++==============================================-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
................................................................................................................................................................:::::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================--------=--:::::...................................................................................................................................................................................................................................:::--==+++++++++**+*****+++++++++===--:::...............................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::-----==================-------------::-------------------:::::-----------------------------------------------------------------------------------------=====-=%@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%#%%########%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%#%%######################################%##########################*++*##################**************++++++++====++**++++++=--------=+************###*******##*********++++***********++********++=====================++*++++++++============++++++================-----------====---::.::.      ................................:::::::::::::::::::::::::::::::::::::::::.     .:::::::............:::::::::::::----------------------:::::......................................................................................................................................................................................................................................::----:::.............................:::::::::::::........:::::::::::::::.............................................................:::::::::::...:::::--:::::::::::----::::....................................................................................................::--====================================================================================================================---:::::::::::--------------------------------------------------------------------------------------------------------=======++++****#########################################################################################################################################******************************************************************************************************************############################################################################*********#######################****************************************************************************#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################**************#########******************************************************########################*********************************************************************#####*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++==============================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
..............................................................................................................................................................::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================----------:::.................................................................................................................................................................................................................................::::--===++++++++++*+***+++++++++++===--:::..............................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::-----==================--------------------------------------------------------------------------------------------------------------------------------======+@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%###%%#######%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%#%%##################################################################+++*#################**************+++++++++===++**+++++==---------=+***********##*********##*********+++************+********+=======================+++++++++++==============++=================-----------====---::.::..     ................................:::::::::::::::::::::::::::::::::::::::::.      ::::::::...........:::::::::::::----------------------:::::......................................................................................................................................................................................................................................::----:::............................:::::::::::::...........:::::::::::::::...........................................................:::::::::::...:::::--::::::::::-----::::....................................................................................................::--=====================================================================================================================---::::::::::---------------------------------------------------------------------------------------------------------=======++++****################################################################################################################################**************************************************************************#######********###############################################################################################################*******#######################***************************************************************#################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################**************#########******************************************************########################*********************************************************************#####*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++==============================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
.............................................................................................................................................................:::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================------::................................................................................................................................................................................................................................::::--===+++++++++++*+++++++++++++++===--::::............................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::------==================--------------------------------------------------------------------------------------------------------------------------------======+@@@%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%###%%#######%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%#%%%######################################%##########################*++*#################**************+++++++++===+++***+++==----------+***********##***********#*********++************++*******+=======================+++++++++++=================================-----------====--:::.:...     ................................::::::::::::::::::::::::::::::::::::::::::      .:::::::...........:::::::::::::----------------------:::::......................................................................................................................................................................................................................................::----:::............................:::::--::::::.............::::::::::::::..........................................................:::::::::::...:::::---:::::::::-----::::....................................................................................................::--======================================================================================================================----::::::::-----------------------------------------------------------------------------------------------------------======++++****#########################################################################################################################*******************************########*****###################################################################################################################################################################******########################***********************************##############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################**************#########******************************************************########################*********************************************************************#####*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++==============================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
.......................................................................................................................................................:...:::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::-----------------------------------====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================-----:...............................................................................................................................................................................................................................:::---===+++++++++++++++++++*+++++++++==---::::..........................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::------===================--------------------------------------------------------------------------------------------------------------------------------======*@@@%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%###%%%##%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%#################%%%#%%######################################%##########################*++*##################*************+++++++++===++*+**+++==----------=+*********###***********************+***********++*******+========================++++++++++================================------------===---::.:....      .............................::::::::::::::::::::::::::::::::::::::::::::       ::::::::..........:::::::::::::----------------------:::::......................................................................................................................................................................................................................................::----:::............................:::::---:::::...............:::::::::::::::.......................................................::::::::::::.:::::-----::::::::-----::::...................................................................................................:::--=======================================================================================================================---:::::::::-----------------------------------------------------------------------------------------------------------=======+++****################################################################################################################*********************************########################################################################################################################################################################################***############################************************##########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################***************########*******************************************************########################*********************************************************************######************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=============================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
.........................................................................................................................................................:::::::::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::----------------------------------=====================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================-:............................................................................................................................................................................................................................:::--====++++++++++++++++++++*+++++++++===---::::.......................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::-------===================-------------------------------------------------------------------------------------------------------------------------------=======#@@@%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%#%%######################################%##########################*+++##################*************+++++++++===++*+**+++=------------+**********#**********************************************+=======================+++++++++++===============================------------==----::.:.....     .............................::::::::::::::::::::::::::::::::::::::::::::.      .:::::::. ........::::::::::::::---------------------:::::......................................................................................................................................................................................................................................::----::............................::::::---:::::.................::::::::::::::......................................................::::::::::::.:::::-----::::::::-----::::...................................................................................................:::--========================================================================================================================---::::::::-------------------------------------------------------------------------------------------------------------======+++****###########################################################################################################***************************#####################################################################################################################################################################################################################################********################################################################################################################################################################################################%#####################################################################################################################################***************#######********************************************************########################*********************************************************************######************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=============================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
........................................................................................................................................................::::::::::::::::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::-------------------------------------===================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================-:......... ...............................................................................................................................................................................................................:::--===+++++++++++++++++++++++++++++++++====--::::..................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------===================-------------------------------------------------------------------------------------------------------------------------------========#@@@%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%##%%######################################%##########################+++*#################*************++++++++++==++++***++=------------=+************************************************++******+=======================++++++++++++=============================-------------------::........    .............................::::::::::::::::::::::::::::::::::::::::::::.      .::::::::. .......:::::::::::::::--------------------:::::......................................................................................................................................................................................................................................::---:::............................:::::---::::::...................:::::::::::::::...................................................::::::::::::::::::------::::::------::::...................................................................................................::---========================================================================================================================----::::::---------------------------------------------------------------------------------------------------------------======+++****######################################################################################################***********************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************####**********************************************************########################*********************************************************************#######************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++=============================================---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
........................................................................................................................................................::::::::::::::::::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::------------------------------------====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================-.....................    ..............................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++====---:::..............................................................................................::::::::::::::::::::::::::::::::::::::::::::-----::::::::::---------===================------------------------------------------------------------------------------------------------------------------------------=========%@@@%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%#%%######################################%##########################*++*##################************++++++++++==+++*+**+++=------------+************************************************++*******+=======================+++++++++++=============================-------------------::.........  ..............................:::::::::::::::::::::::::::::::::::::::::::::       .:::::::. .......:::::::::::::::--------------------:::::......................................................................................................................................................................................................................................::---:::...........................::::::---::::::.....................:::::::::::::::.................................................::::::::::::::::::---------::-------::::...................................................................................................::---=========================================================================================================================---::::::----------------------------------------------------------------------------------------------------------------======+++****##############################################################################################***********************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************************************########################*********************************************************************#######************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++===========================================----------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
....................................................................................................................................................::::::::::::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::-----------------------------------=====================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================-...................     .............................................................................................................................................................................................::---==+++++++++++++++++++++++++++++++++++++++===---::::.........................................................................................:::::::::::::::::::::::::::::::::::::::::::::--------:-:::::----------====================-----------------------------------------------------------------------------------------------------------------------------==========%@@%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%#%%######################################%##########################*++*##################*************+++++++++===++*+**==+=------------=**********************************************+**+*+*****+=======================++++++++++++============================------------====---::........................................::::::::::::::::::::::::::::::::::::::::::::::       .::::::::........::::::::::::::::-------------------::::......................................................................................................................................................................................................................................:::---::............................:::::----:::::........................::::::::::::::::..............................................::::::::::::::::::------------------::::...................................................................................................::--===========================================================================================================================---:::::------------------------------------------------------------------------------------------------------------------=====+++****##########################################################################################************##********#####################################################################################################***********#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************************************########################*********************************************************************########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++============================================----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
..................................................................................................................................................::::::::::::::::::::::::::::::::::::::::-------------:::::::::::::::::::::::::::::::------------------------------------=======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================: .... .........               ....................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++===---:::.....................................................................................:::::::::::::::::::::::::::::::::::::::::::::---------------------------=====================---------------------------------------------------------------------------------------------------------------------------============%@@%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%#%%#####################################%##########################*+++*##################************++++++++++==++++*+==+=-------------+*********************************************++**++******+=====================++++++++++++++===========================------------====---::.:..:...:.............................::::::::::::::::::::::::::::::::::::::::::::::::.       .:::::::. ......::::::::::::::::-------------------::::......................................................................................................................................................................................................................................:::---::...........................:::::-----:::::..........................::::::::::::::::............................................::::::::::::::::::------------------::::...................................................................................................::--===========================================================================================================================----::::------------------------------------------------------------------------------------------------------------------======+++****#######################################################################################**********############################################################################################################***********************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************************************########################*********************************************************#**********##########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++============================================-----------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::-------------::::::::::::::::::::::::::::-----------------------------------========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================:... .........                        ...........................................................................................................................................................................:::--==++++++++++++++++++++++==++++++++++++++++++++===---::::................................................................................::::::::::::::::::::::::::::::::::::::::-----------------------------------====================---------------------------------------------------------------------------------------------------------------------------=============%@@%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%#%%#####################################%###########################+++*##################************++****++++==++++++==++=------------=**********************************************+++++*******+====================++++++++++++++===========================-----------====----:..:..:..::::..........................::::::::::::::::::::::::::::::::::::::::::::::::::       .::::::::.......::::::::::::::::-------------------::::.......................................................................................................................................................................................................................................::--:::..........................::::::-----:::::............................::::::::::::::::...........................................:::::::::::::::::-------------------:::...................................................................................................::--============================================================================================================================----:::--------------------------------------------------------------------------------------------------------------------=====+++****#######################################################################################################################################################################################################******************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************************************########################*********************************************************##*********##########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++============================================----------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
...............................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::---------------:::::::::::::::::::::::::----------------------------------==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================:. .........                          ........................................................................................................................................................................:::--==+++++++++++++++++++++=====+++++++++++++++++++++===--::::.............................................................................:::::::::::::::::::::::::::::::::::::::-------------------------------------=====================--------------------------------------------------------------------------------------------------------------------------==============%@@%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%#####################################%##########################*++*##################************++****++++==++++++==++=-------------+*********************************************+++++*+****+*+===================+++++++++++++++++========================----------====-----:..:..::.::::::......................::::::::::::::::::::::::::::::::::::::::::::::::::::    .   ::::::::.......:::::::::::::::::------------------::::......................................................................................................................................................................................................................................::::::::..........................:::::------:::::.............................:::::::::::::::::.........................................:::::::::::::::::-------------------::::..................................................................................................::--============================================================================================================================-----:----------------------------------------------------------------------------------------------------------------------=====+++****###############################################################################################################################################################################################**************+++++++++++++++++*******#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************#######################**********************************************************###********###########**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++============================================----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................
..........................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::----------------:::::::::::::::::::::::----------------------------------==========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================:    ... .  ..                           ...................................................................................................................................................................::--==+++++*****+++++++++++=======+++++++++++++++++++++===---:::..........................................................................::::::::::::::::::::::::::::::::::::::-----------------------------------------===================------------------------------------------------------------------------------------------======--------------------------===============%@@%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%##%%#####################################%##########################*+++##################*********#**+******++++=++++*+===*=-------------=+*****************************+**************++++++********=============+++==++++++*++++++++++++++=====================---------=====----:...:......:::::..:...................::::::::::::::::::::::::::::::::::::::::::::::::::::.   ..  .::::::::.......:::::::::::::::::-----------------:::::................................................................................................................................................................................................................:::::.................::::::...........................::::-------::::.................................::::::::::::::::.......................................::::::::::.::::::-------------------::::..................................................................................................::--=============================================================================================================================----------------------------------------------------------------------------------------------------------------------------=====+++****#######################################################################################################################################################################################***************+++++++++============++++******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################***************************************************************************************######################**********************************************************####********###########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++=============================================----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
........................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::::----------------------------------============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================+++=======================-. ..  .                                 .................................................................................................................................................................:::-==++++********+++++++++====--===+++++++++++++++++++++===---:::.......................................................................:::::::::::::::::::::::::::::::::::::::------------------------------------------==================--------------------------------------------------------------------------------------==============----------------------================%@@%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%#%%#####################################%##########################*+++*#################*********#**+******++++=++++++===++=-------------=+**************************+===+*************++++++*******+===========+++++=+++++++++++++++++++++++==================-----------==+==---:....:.....::::::..................:..::::::::::::::::::::::::::::::::::::::::::::::::::::.   ..  .::::::::.......:::::::::::::::::-----------------:::::..............................................................................................................................................................................................................:::::::::...............::::::..........................:::::------:::::..................................:::::::::::::::::......................................::::::::...:::::-------------------::::.................................................................................................:::--=============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------=====+++****################################################################################################################################################################################****************++++++++========--------====+++*****###############################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************************************************************************######################**********************************************************####********###########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++=============================================----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
.....................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::---------------------------------=============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================+++++++=====================: . .. .                               .................................................................................................................................................................::--==+++************++++++==-----===++++++++++++++++++++++==---:::..................................................................:::::::::::::::::::::::::::::::::::::::----------------------------------------------=================----------------------------------------------------------------------------------====================-------------------==================%@@%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%#%%%####################################%###########################+++*#################*********#**+*******++++++++++===++=---=----------=+*************************=====+************++++++********+=========++++++++++++++*+++++++++++++++++++===============----------==+==---:....:...:..:::::.................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::    .   .::::::::......::::::::::::::::::----------------:::::.............................................................................................................................................................................................................::::::::::::.............::::::.........................::::::------:::::....................................::::::::::::::::::....................................:::::.....:::::--------:::--------:::::................................................................................................:::--=============================================================================================================================------------------------------------------------------------------------------------------------------------------------------=====+++****#######################################################################################################################################################################****************++++++++++=======---------::::-----==++*****###########################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************************************#####################*********************************************************######********###########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=============================================---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................
.................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------::::::::::::::---------------------------------==============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================+++++++++++++++++++++====================-.   .                                ................................................................................................................................................................:::-==++++************+++++==-------==+++++++++++++++++++++++===--:::..............................................................::::::::::::::::::::::::::::::::::::::--------------------------------------------------================------------------------------------------------------------------------------==========================-----------------===================%@@%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++*%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%####################################%%##########################*++**#################********#**+*******++++++++++===+*=-=-------------=+************************+======************+++++*********+=======+++++*+++++++++**++++++++++++++++++++=============----------====----:...:.:..:..::::::..:............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    ..  .::::::::.......:::::::::::::::::----------------::::.............................................................................................................................................................................................................::::::::::::::............::::::.........................:::::-------::::........................................::::::::::::::::::...........................................:::::-----:::::::-------:::::................................................................................................:::--==============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------====+++****#################################################################################################################################################################*************+++++++++++========--------::::::::::::::---=++****########################################################################################################################################################################################################################################################################################################################################################################################################################################################***************************************************************************************************###################*******************************************************############*******###########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++============================================---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................
.............................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------::::::::::::---------------------------------==============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================+++++++++++++++++++++++++========+===+=======: .                                  ...............................................................................................................................................................::--=+++**************+++++==--:::--==++++++++++++++++++++++++==--:::...........................................................::::::::::::::::::::::::::::::::::::::-----------------------------------------------------================--------------------------------------------------------=================================================--------------=====================#@@%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++*%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%#%%#####################################%##########################*+++*##################**********++******++++++++++====*+-----------------=************************+======+***********++++++*******+=======+++++*+++++++++**+++++++++++++++++++++++==========-----------==-----:...:::.::..::::::..............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.   ..   .:::::::........:::::::::::::::::--------------:::::.............................................................................................................................................................................................................:::::--:::::::::.........:::::::........................:::::--------::::..........................................::::::::::::::::::.........................................::::::::::::::::::------::::::...............................................................................................::---==============================================================================================================================----------------------------------------------------------------------------------------------===-------------------------------====+++*****#########################################################################################################################################################*************++++++++++=========--------::::::::::........:::--==+****#####################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************************************************************###################**************************************************#################*******###########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................
............................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------:::::::---------------------------------===============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================+++++++++++++++++++++++++++++++++++++=====+====:                                    .............................................................................................................................................................:::-==+++**************++++==--:::::--=+++++++++++++++++++++++++==--:::.......................................................:::::::::::::::::::::::::::::::::::::::-------------------------------------------------------===============------------------------------------------------------====================================================-------------======================#@@%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%#%%%####################################%##########################*+++*##################**********++*******++++++++=====++=-----------------=*************++++*******+======+************++++********+======++++++*+++++++++*++++++++++++++++++++++++++=========----------------:..:.::::::..::::::............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    :.  .::::::::.......:::::::::::::::::--------------:::::.............................................................................................................................................................................................................:::::-----::::::::.......:::::::........................:::::--------::::...........................................::::::::::::::::::::.......................................::::::::::::::::::----:::::::::.............................................................................................::---==============================================================================================================================--------------------------------------------------------------------------------------------======-------------------------------====+++*****#############################*****####################################################################################################*############*************+++++++++=======---------:::::::::::................::--=++***################################################################################################################################################################################################################################################################################################################################################################################################################################***################*******************************************************************************************************###################*************************************************###################*******###########************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................
...........................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================++++++++++++++++++++++++++++++++++++++++++++=+==-                                    ............................................................................................................................................................::--=+++***************++++=--::::::--==++++++++++++++++++++++++===--::.....................................................::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------===============------------------------------------------------------===================================================------------========================*@@%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%####################################%###########################*++*###################*******#*++*******++++++++=====+*=------------------++++++*****+++++++++*****+=======+***********+++*+*******+=====++++++*+++++++++**+++++++++++++++++++++++++++=========-------------:::::.:::::::::::::::..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    ..   .:::::::........:::::::::::::::::-------------:::::..............................................................................................................................................................................................................::::-------::::::::.....:::::::.......................:::::--------::::...............................................:::::::::::::::::::::....................................::::::::::::::::::::::::::::::.............................................................................................::---==============================================================================================================================------------------------------------------------------------------------------------------=========-------------------------------====+++*****#########################**********###########################################################################################*************************+++++++++========---------::::::::::::.......................::-==+***##############################################################################################################################################################################################################################################################################################################################################################################################################################********#############**********************************************************************************###*****************####################**********************************************######################*******###########************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
...........................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------=================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================++++++++++++++++++++++++++++++++++++++++++++++=++=                                    ..........................................................................................................................................................:::-==+++**************++++==--:::::::-==+++++++++++++++++++++++++==--:::.................................................::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------===============------------------------------------------------------===================================================-----------=========================*@@%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%####################################%###########################*+++###################*****#*#*++*******++++++++======*==-----------------=+++++++++++++++++++++++**+=======+**********++++*+*******+====++++++**++++++++**+++++++++++++++++++++++++++++=========----------:::::::::::::::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.   .:   .::::::::........::::::::::::::::-------------:::::..............................................................................................................................................................................................................:::::--------::::::::..::::::::.......................:::::--------::::................................................::::::::::::::::::::::...................................:::::::::::::::::::::::::::::.............................................................................................::---==============================================================================================================================-----------------------------------------------------------------------------------------===========-------------------------------====+++****#########################****************########################################**#######################################************************++++++++========-------::::::::::::::.............................::--=+***#############################################################################################################################################################################################################################################################################################################################################################################################################################**********############*************************************************************************#################################################*********************************************########################******############***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
........................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------=================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================++++++++++++++++++++++++++++++++++++++++++++++++++=.  .                                .........................................................................................................................................................::--=+++****************+++=--::::::::--=++++++++++++++++++++++++++==--::...............................................:::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------===============------------------------------------------------------=================================================-------------=========================+%@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%###################################%%##########################*+++*#################******#***++*******++++++++======++=-----------------=+++++++++++++++++++++++***+========+*********++++********++=====+++++**++++++++**++++++++++++*+++++++++++++++==========-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    ..   ::::::::........:::::::::::::::--------------:::::..............................................................................................................................................................................................................::::----------::::::::::::::::........................::::---------::::...................................................:::::::::::::::::::::::...............................:::::::::::::::::::::::::::::.............................................................................................::--================================================================================================================================----------------------------------------------------------------------------------------===========--------------------------------====++****##############################################################################**********###############################*********++++++++++++++++++++=======--------::::::::::::::::::................................::-=++***###########################################################################################################################################################################################################################################################################################################################################################################################################################************###########****************************************************************##########################################################****************************************#############################******############*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
.....................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================+++++++++++++++++++++++++++++++++++++++++++++++++++=.  .                               .........................................................................................................................................................::-==++***************++++==-:::...:::--==+++++++++++++++++++++++++==--:::.............................................::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------===============--------------------------------------------------------==============================================--------------=========================+%@%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%%%####################################%###########################+++*##################*****#***++********+++++++======++=-----------------=++++++++++++++++++++++++**++========+********++++*********++=====++++**++++++++**++++++++++++*+++++++++++++++++=========----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    ..   .::::::::........:::::::::::::::-------------:::::...............................................................................................................................................................................................................::::-----------::::::::::::::.......................:::::--------:::::.....................................................::::::::::::::::::::::::.......................................::::::::::::::::...............................................................................................::--================================================================================================================================----------------------------------------------------------------------------------------=====+=====---------------------------------===+++****##########################################################################*****************#######################*********++++++=====+++++++=======--------:::::::::::....::::::::.................................::--=+***###########################################################################################################################################################################################################################################################################################################################################################################################################################************###########***************************************************##*####################################################################***************************##########################################******############*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
....................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------===================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================++++++++++++++++++++++++++++++++++++++++++++++++++++=.                                 ........................................................................................................................................................::--=+++***************+++==--:::....:::-==+++++++++++++++++++++++++===-:::.........................................:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------===============---------------------------------------------------------=============================================-------------=======================-==+#@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%#%%%####################################%###########################*+++##################*********++********+++++++======+*==-----------------+++++++++++++++++++++++++**+=========+*********+++******+*+++====+++++**+++++++***+++++++++++*++++++++++++++++++++++=====-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    ..   .::::::::.........::::::::::::::::-----------:::::...............................................................................................................................................................................................................::::-------------:::::::::::::.....................:::::---------::::........................................................::::::::::::::::::::::::::.....................................:::::::::::::................................................................................................::--================================================================================================================================---------------------------------------------------------------------------------------=====+++====----------------------------------===+++***#######################################################################************************************************+++++======---=========-------:::::::::::............::::::::.................................::-=+***###########################################################################################################################################################################################################################################################################################**********#######################################################################################################################**********#############***********************************************##########################################################################**************#######################################################******############************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################*****************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
...................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------=========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================+++++++++++++++++++++++++++++++++++++++++++++++++++++=.                                 .......................................................................................................................................................::--=++****************+++==-:::.....:::--==+++++++++++++++++++++++++==--::.....................................:::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------================----------------------------------------------------------============================================----------------=======================+*%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%######%###############%%%#%%%###################################%###########################*+++*#################*********++********+++++++=======*+=-----------------=+++++++++++++++++++++++++**+==========+*******+++*********++====++++++*++++++++**+++++++++++*+++++==+++++++++++++++++==--::::::::::::::::::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    :    .::::::::........:::::::::::::::::---------::::::................................................................................................................................................................................................................::::--------------:::::::::::.....................:::::---------::::..........................................................:::::::::::::::::::::::::::::...................................::::::::.................................................................................................:::--================================================================================================================================---------------------------------------------------------------------------------------====++++====----------------------------------====++***#####################################################################**************+*******************************++++++=====------------------::::::::::................:::::::::::................................::-=++**##########################################################################################################################################################################################################################################################################################************#######################################################################################################################*********###############*****************************************##############################################################################*************########################################################******###########*********************************************************************************************************************************************************************************************************************************************************************************************************************************************###########################**************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++==========================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------=============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++++++++=..                               .......................................................................................................................................................::-==++***************+++==--::.......::--==+++++++++++++++++++++++++===-:::..................................:::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------================----------------------------------------------------------------------===============================--------------------=============-===-===*%@%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%############%%%#%%%###################################%###########################*+++*##################********++********+++++++=======++=------------------=+++++++++++++++++++++++++**+==========+*******************++===++++++**+++++++***++++++++++*+++++-:-=++++++++++++++++=-::::::::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    ..   .::::::::.........::::::::::::::::---------::::::................................................................................................................................................................................................................::::----------------:::::::::.....................::::---------:::::.............................................................::::::::::::::::::::::::::::::::......................................................................................................................................:::--================================================================================================================================--------------------------------------------------------------------------------------====++++=====-----------------------------------====++***########################################************************###************+++++++++++++++++++++++++++++++++++++=====----::::::::::::::::::::::.....................::::::--::::................................::--=+***#########################################################################################################################################################################################################################################################################################**************######################################################################################################################********########################*********########*********####################################################################################**********############################################################******##########***************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################**************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++==========================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------===============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++-                                ......................................................................................................................................................::--==++***************+++==-:::........::--==+++++++++++++++++++++++++==--::...............................::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------================------------------------------------------------------------------------------======================-------------------------=-=======-===-===+#@%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%##%%###################################%%###########################*+++##################********++*********++++++=======++=------------------==++++++++++++++++++++++++***===========+******************+++==+++++++*+++++++***++++++++++*+++++--::-=++++++++++++++=-::::::::::::::::::::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    ..    ::::::::. ........::::::::::::::::--------::::::................................................................................................................................................................................................................::::-------------------::::::....................::::----------::::................................................................::::::::::::::::::::::::::::::::::..................................................................................................................................:::--================================================================================================================================--------------------------------------------------------------------------------------====++++====-------------------------------------===+++***#################################******************************#**************+++++++=====++++++++++++++++++++======----::::::::..:::::::::::........................:::::------:::.................................::-=++**########################################################################################################################################################################################################################################################################################***************######################################################################################################################********######################################################################################################################################********##############################################################******##########*********************************************************************************************************************************************************************************************************************************************************************************************************************************########################################**************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++==========================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
............................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++:                                .....................................................................................................................................................::--=++***************+++==--::.........:::--==++++++++++++++++++++++++==--::.............................::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------================----------------------------------------------------------------------------------=================---------------------------------======-=-=+*%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**+++++*%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%#%%%###################################%###########################*+++*#################********+++********++++++=======++=--------------------==+++++++++++++++++++++++**+===========+*****************+++++==+++++**++++++****+++++++++**++++-----:=+++++++++++++=--:::::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    ..   .::::::::.........::::::::::::::::-------:::::::.................................................................................................................................................................................................................::::--------------------:::::..................:::::---------:::::...................................................................::::::::::::::::::::::::::::::::::::::...........................................................................................................................::---================================================================================================================================-------------------------------------------------------------------------------------====++++====---------------------------------------===+++***#########################******************++++++++++++++++******************+++==============================-----::::::::.........................................:::::------:::.................................::--=+***######################################################################################################################################################################################################################################################################################*****************#####################################################################################################################********######################################################################################################################################*******###############################################################******##########******************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################***************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++==========================================-----------------------------------:::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
........................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------=-----------------------------================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++.                               .....................................................................................................................................................::-==++***************+++=--::...........::--==++++++++++++++++++++++++===-::...........................:::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------================-----------------------------------------------------------------------------------===============-------------------------------------=-===-==+#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++*%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%#%%%#%@%###################################%###########################*+++*#################*****#**+++*#******++++++========++---------------------==+++++++++++++++++++++++**============+****************+++++++++++++*++++++****+++++++++**++++-----=+*++++++++++++=--:::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    ..    ::::::::..........::::::::::::::::---:--:::::::.................................................................................................................................................................................................................::::---------------------:::::.................::::----------::::......................................................................:::::::::::::::::::::::::::::::::::::::::......................................................................................................................::---================================================================================================================================-------------------------------------------------------------------------------------====++=====-----------------------------------------===+++***################****************+++++++++++++++=========++++****************++====-----------------------------:::::::............................................:::::------::::..................................::-=++***###############################################################################################################################################################************##########################################################################################################*****************######################################################################################################################********#####################################################################################################################################***###################################################################*******#########*****************************************************************************************************************************************************************************************************************************************************************************************************************************###########################################***************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++==========================================---------------------------------::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
......................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------======--------------------------================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.                               ....................................................................................................................................................::-==++**************+++==--::...........:::--==+++++++++++++++++++++++===--:.....................:::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------=================---------------------------------------------------------------------------------------====---------------------------------------------======+#%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%###%#######%%%#%%%###################################%############################+++*###################***#***++********++++++========++=---------------------====+=+++++++++++++++++++*+============+****************++++++++++++**+++++****++++++++****+++=---=+++++++++++++++=---:::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    ..    .::::::::..........::::::::::::::------::::::::..................................................................................................................................................................................................................:::----------------------::::................:::::---------:::::.........................................................................::::::::::::::::::::::::::::::::::::::::::::................................................................................................................::---================================================================================================================================-------------------------------------------------------------------------------------==========-------------------------------------------===+++****########*************+++++++++++++=============-------===++***************++===---::::::::::::::::::::::::::::::................................................:::::::---::::...................................::--=+***###################################################################################################################################################***************************######################################################################################################******************######################################################################################################################*********##################################################################################################################################*****###################################################################*******########***************************************************************************************************************************************************************************************************************************************************************************************************************************#############################################*****************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++============================================------------------==----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
..............................................................................................::..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------======-------------------------=================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=. .                            ...................................................................................................................................................:::-==+**************+++==--:::............:::--==+++++++++++++++++++++++==--::...................::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------=================----------------------------------------------------------------------------------------==--------------------------------------------------===*%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#%%###%####%##%%%##%%%##################################%############################++++###################***#***++*##******+++++========++=------------------------====++++++++++++++++++**==============***************+++++++++++++*++++++****+++++++****+++=-:-+*+++++++=++++++==----:::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    .     ::::::::..........:::::::::::::::-::---:::::::..................................................................................................................................................................................................................:::-----------------------::::...............::::----------::::.............................................................................:::::::::::::::::::::::::::::::::::::::::::::............................................................................................................::---===============================================================================================================================--------------------------------------------------------------------------------------=========---------------------------------------------===+++******************++++++++++===========--------------------==++***************++==--::::::::::::::::::::::::::......................................................::::::::::::....................................:::-=++**##########################################################################################################################################*************************++++++*******####################################################################################################******************######################################################################################################################*********##################################################################################################################################*****###################################################################********#######**************#####******************************************************************************************************************************************************************************************************************************************************************************************************##############################################******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================------------------==---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
............................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------=======--------===-----------==================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- .   .                        ...................................................................................................................................................:::-=++**************+++=--:::..............:::--==++++++++++++++++++++++==--::..................:::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------=================---------------------------------------------------------------------------------------------------------------------------------------------==+%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%##%%%%%%%%%%%##%%%##################################%%###########################*+++*##################**##*#*++*##******+++++========++=----------------------------=+=++++++++++++++++*+==============+**************++++++++++++**++++++***+++++++****+++=--=**++++++++++++++===----::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    ..    .::::::::..........::::::::::::::::::--:::::::..................................................................................................................................................................................................................::::----------------------:::::.............::::----------:::::...............................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::..:................................................................................................::--================================================================================================================================-------------------------------------------------------------------------------------==========----------------------------------------------===+++**********+++++++++========------------::::::::::::::::::---=++********#*****+++=--::::.............................................................................:::::::::.......................................::-==+***###########################################################################################################################***************************+++++++++++++++++++++******##################################################################################################******************#######################################################################################################################********##################################################################################################################################*****###################################################################*********####*************#########*********************************************************************************************************************************************************************************************************************************************************************************************#####################################################*******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================-----------------=+=---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
...........................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------===========---==========----===================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================-=--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.  .                          ...................................................................................................................................................::--=++*************+++==--::................:::--==+++++++++++++++++++++===-::..................::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------==================---------------------------------------------------------------------------------------------------------------------------------------------===@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%##%%%%%%%%%%%##%%%###################################%###########################*+++*###################*####*++*##******+++++========+++=---------------------------=+=++++++++++++++++**+==============**************++++++++++++++*++++++**+++++++*****++=-=*+*+**++++++++++==-====---::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::     .    .::::::::. .........:::::::::::::::::--:::::::...................................................................................................................................................................................................................:::-----------------------::::............:::::----------::::...................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................::--================================================================================================================================-------------------------------------------------------------------------------------=========------------------------------------------------====+++++++++++++========----------:::::::::::::::::::.....:::::--=+++****######***++==--:::.................................................................................:...........................................::-==+***#####################################################################################################################**************************+++++++++++================+++****################################################################################################********************########################################################################################################################*******#################################################################################################################################******###################################################################************************############**************************************************************************************************************************************************************************************************************************************************************************************######################################################*************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================----------------=++=--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
...........................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------==============================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================---=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=.   .                        ...................................................................................................................................................::--=++************+++==--::.................::::--==+++++++++++++++++++++==-::..................::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------==================---------------------------------------------------------------------------------------------------------------------------------------------===@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%##%%%##################################%############################+++*########################*++*##******++++++========++=----------------------------=+=++++++++++++++++*+===============**************+++++++++++++*+++==+**+++++++*******+=+***+**++++++++++==-=====--:::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::     .     .:::::::: .........::::::::::::::::::-:::::::...................................................................................................................................................................................................................::::-----------------------::::...........::::----------:::::.......................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................::--================================================================================================================================-------------------------------------------------------------------------------------=========--------------------------------------------------=====+++========---------:::::::::::::::::..................:::--==++***#######***++==--::............................................................................................................................:::-==+***###############################################################################################****#############*********************+++++++++++++===========------------==++*****##############################################################################################*********************########################################################################################################################******#############################################################################################***************************########********###################################################################**********************###############************************************************************************************************************************************************************************************************************************************************************************###########################################################*********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================---------------=+++--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
..........................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------==============================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================---=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- .                         ....................................................................................................................................................::-==++************++==--:::..................::::--===+++++++++++++++++++==--:..................::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------==================-----------------------------------------------------------------------------------------------------------------------------------------------=@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%##%%%##################################%############################*+++########################*++*##*******+++++========++=----------------------------======+++++++++++++**===============+*************+++++++++++++*+++===***++++++*******++*+**+*++++++++++==-===--==-:::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.     .    .::::::::...........:::::::::::::::::::::::::...................................................................................................................................................................................................................:::::----------------------:::::.........:::::----------::::...........................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................::--================================================================================================================================-------------------------------------------------------------------------------------========----------------------------------------------------========---------::::::::::::::..............................::--==++***#######***++==--::......................................................................................................................:::::::--==+***##############################################################################################*****#############*****************++++++++==========-------------:::::::---==++****#############################################################################################**********************#########################################################################################################################*****#####################################################################################***********************************########********###################################################################*********************################*****************************************************************************************************************************************************************************************************************************************************************#############################################################***************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================-------------=++++--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
........................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------=============================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================---=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. .                      ......................................................................................................................................................::-==++***********+++==-:::....................::::--===++++++++++++++++++==--:..................:::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------==================-----------------------------------------------------------------------------------------------------------------------------------------------=@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%##%%%%#################################%############################*+++*###################*##**++*###******+++++========++=-----------------------------=+=====++++++++++++*+===============+*************++++++++++++**++===+**++++++******+**+**+++++++++++++==========--::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.     . .   :::::::::...........:::::::::::::::-::::::::....................................................................................................................................................................................................................:::::----------------------::::........:::::----------::::................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................::--================================================================================================================================-------------------------------------------------------------------------------------========--------------------------------------------------------------::::::::::::........................................::--==++***#######***++==--:::......................................................................................................:::::::::::::::::::---==++***###############################################################################################*****###########******+++*******+++========-----------::::::::::::::::::::---=++****############################################################################*******#######************************##########################################################################################################################################################################################################**************************************************##********##################################################################**********************################************************************************************************************************************************************************************************************************************************************************************###############################################################******************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================-------------=+=++=-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................
.....................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------=============================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================----++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=. .                    .......................................................................................................................................................::-==++**********+++==--::......................::::--===+++++++++++++++++==--::.................:::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------==================-----------------------------------------------------------------------------------------------------------------------------------------------=@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*+++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#################################%############################*+++*###################*##**+++**#******+++++========+++=----------------------------========+++++++++++**================+************++++++++++++**++===+**++++++************++++++++++++===++++====---:::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::           .::::::::...........:::::::::::::::-::::::::....................................................................................................................................................................................................................:::::----------------------:::::.......::::----------:::::...................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................:::--================================================================================================================================-------------------------------------------------------------------------------------=======----------------------------------------------------------:::::::::::...............................................::--==++***#######***++==--::..........................................................................................::::::::::::::::::::------------===++***################################################################################################*****##########****+++++++++***+++===------------:::::::::::::::::::...::::--==+****###########################################################################*************#*************************##############################################################################################################################################################################################**##*******************************************************************###################################################################**********************#################********************************************************************************************************************************************************************************************************************************************************################################################################********************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================-------------++++==------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................
....................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------========+=====================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================----+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++: . . . .. ..        ........................................................................................................................................................:::-==++*********+++==--:::.......................::::--===++++++++++++++++==--::.................::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------==================---------------------------------------------------------------------------------------------------------------------------------------------=-=@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%#%%%%#################################%%############################+++*###################**##*+++*##******+++++=========++=----------------------------============++++++++*+================+************++++++++++++**+====**++++++**********+++++++++++++++++++++=====---:::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.          .::::::::. ..........:::::::::::::::-:::::::......................................................................................................................................................................................................................:::::---------------------:::::.....:::::----------:::::......................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................::---================================================================================================================================-------------------------------------------------------------------------------------=======--------------------------------------------------------:::::::......................................................::--==++***#######****++=--:::..............................................................................::::::::::::::::::::---------------========+++****################################################################################################******########****+++====++++++++==----:::::::::::::::::.................:::--=++****#########################################################################****************************************#######################################################################################################################################################################################*******************************************************************************#################################################################***********************#################*************************************************************************************************************************************************************************************************************************************************#####################################################################***********************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================------------+++++=-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
...................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------=======++++===================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================----++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. . . .  ......   ..........................................................................................................................................................:::-==++********+++==--:::.........................::::--===+++++++++++++++==--::.................::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------==================----------------------------------------------------------------------------------------------------------------------------------------------==*@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%##################################%############################*+++*###################****+++*##******+++++=========++=-----------------------------============++++++++*================+************++++++++++++**+====+**+++++**********+++++++++++++++++++++=======--::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.           .::::::::...........:::::::::::::::::::::::......................................................................................................................................................................................................................::::::---------------------:::::::::::::----------:::::...........................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................::---================================================================================================================================--------------------------------------------------------------------------------------=====--------------------------------------------------------::::::.........................................................:::-==++***#######****++=--:::...................................................................:::::::::::::::::::---------------==============+++++++****#################################################################################################*******######****++========++++++==--::::::::::...........................:::-==+****#########################################################################*****************************************#####################################################################################################################################################################################********************************************************************************################################################################************************#################***********************************************************************************************************************************************************************************************************************************************####################################################################**************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================------------+++++=-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
..................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======++++++==================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================----++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=. ..... ...................................................................................................................................................................:::-==++*******+++==--:::............................:::---==++++++++++++++==--:.................:::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------==================-----------------====---------------------------------------------------------------------------------------------------------------------------+@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#################################%############################*+++*###################****+++*##******+++++=========++==----------------------------============++++++++*+================+************++++++++++++*+====+**+++++**********++++++++++++++++++=+==========--::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.          .::::::::. ..........::::::::::::::::::::::.......................................................................................................................................................................................................................::::::---------------------:::::::::::----------:::::................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................::---================================================================================================================================--------------------------------------------------------------------------------------====---------------------------------------------------------:::::...........................................................:::-==++***########***++=--:::.......................................................:::::::::::::::::::-------------=============++++++++++++++++********##################################################################################################*******######***++==-----==++++++==-:::::..................................::--=++***########################################################################******************************************##########################################################################################################################################################################*******************************************************************************************###############################################################*************************#################******************************************************************************************************************************************************************************************************************************************#################################################################**********************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++==========================================------------+++=++-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------======+++++++=================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================-----+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-. ........................................................................................................................................................................:::-==++******+++==--:::..............................::::--==+++++++++++++==--:.................::::::::::::::::::::::::------------------------------------------------------------------------------------------------------==================------------------=====-----=-------------------------------------------------------------------------------------------------------------------%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%##**+++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#################################%############################*+++*###################****+++*##*******+++++========++==----------------------------=============++++++++*=================+***********++++++++++++**====+***++++**********++++++++++++++++================-:::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.           .::::::::............:::::::::::::::::::::........................................................................................................................................................................................................................:::::::--------------------:::::::::----------:::::......................................................................................................................:::::::::::::::::::::::::::::::::::::::::::..........................................................................::---================================================================================================================================----------------------------------------------------------------------------------------=-----------------------------------------------------------::::............................................................:::--=++***########***++=--:::............................................:::::::::::::::::::-------------===========+++++++++++++++*******************####################################################################################################********####****+==--:::--=++++++==--:::...................................:::-=++****#######################################################################******************************************#############################################################################################################################################################********************************************************************************************************#############################################################***************************#################***************************************************************************************************************************************************************************************************************************************##################################################################*************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++==========================================------------+++=++-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
..............................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------====+++++++++=================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================-----=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-.........................................................................................................................................................................:::-==+++****+++==--::::...............................::::--==+++++++++++===-::.................:::::::::::::::::::::::-------------------------------------------------------------------------------------------------------==================-----------------========================-=======----------------------------------------------------------------------------------------------+@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%##**+++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#################################%#############################+++*###################*##*+++*##*******+++++========+++=---------------------------:-============++++++++*+================++***********+++++++++++**+====+**++++**********+++++++++++++++==============-===-:::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::           .::::::::. ..........:::::::::::::::::::::..........................................................................................................................................................................................................................:::::::-------------------:::::::----------:::::..........................................................................................................................::::::::::::::::::::::::::::::::::::::::..........................................................................::---================================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................:::--=++***#######****++==-:::...................................:::::::::::::::::-------------============+++++++++++++++**************************######################################################################################################********###****++=--::::--==+++++==--:::....................................::-==+****#######################################################################******************************************#########################################################################################################################################################************************************************************************************************************############################################################****************************##################***********************************************************************************************************************************************************************************************************************************###################################################################***************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++=========================================------------+++++=--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
............................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------====+++++++++=================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================-----=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-........................................................................................................................................................................:::--==++++++++==--::::..................................:::--===++++++++===--::.................::::::::::::::::::::::--------------------------------------------------------------------------------------------------------==================-----------------==================================--------------------------------------------------------------------------------------------%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%###*++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%################################%%############################*+++*##################**#*+++**#*******+++++=========++=-----------------:--:::-::-:-============+++++++++*=================+***********++++++++++++*+====+***+++*********+++++++++++++++===============--===:::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.           :::::::::............::::::::::::::::::::...........................................................................................................................................................................................................................:::::::--------------------:::-----------:::::.................................................................................................................................::::::::::::::::::::::::::::::::::..........................................................................::---================================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------:::::.............................................................:::--==+***########***++==--::...................:::::::::::::::::::::::------------===========++++++++++++++***************************##################################################################################################################*******##*****+==--:::::-==++++++=--:::....................................::--=++***#######################################################################******************************************####################################################################################################################################################*************************************************************************##########******************************#########################################################*******************************##################*********************************************************************************************************************************************************************************************************************************####################################################################****************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++==========================================-----------+++++=--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
...........................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------====++++++++++================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================-----=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:.......................................................................................................................................................................:::--==++++++===--::::....................................:::--====+++++====-::..................::::::::::::::::::------------------------------------------------------------------------------------------------------------==================-----------------------============================-------------------------------------------------------------------------------------------*@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@###*+++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%################################%%############################*+++*##################**#**++**#*******+++++=========++=-------------------::::::-:---============++++++++*+=================+***********++++++++++++*====+***+++*********++++++++++++++================--===-::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.           .::::::::.............:::::::::::::::::::............................................................................................................................................................................................................................:::::::--------------------------------:::::........................................................................................................................................::::::::::::::::::::::::::::..........................................................................::--=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------::::..............................................................:::--==+***########***++==--::............:::::::::::::::::::-----------============+++++++++++++**************************##############################################################################################################################*************++=--::::::-==++*+++==-:::.....................................::-==+****######################################################################*******************************************#################################################################################################################################################***************************************************************************#############***************************#######################################################*********************************##################******************************************************************************************************************************************************************************************************************************######################################################################******************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++==========================================-----------++++++--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
...........................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------====+++++++++++================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++........................................................................................................................................................................:::--==+++===---::::......................................:::--===========--::..................::::::::::::::::::------------------------------------------------------------------------------------------------------------==================-------------------------===========================------------------------------------------------------------------------------------------@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@###*+++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%##%%%%################################%%############################*+++*##################**##*++**#*******+++++=========++==-----------------::...::-:-:-============++++++++**=================++**********++++++++++++*+===+***+++********+++++++++++++++================---==-:::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::            :::::::::............:::::::::::::::::::.............................................................................................................................................................................................................................::::::::-----------------------------:::::...............................................................................................................................................:::::::::::::::::::::...........................................................................::--=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------::::................................................................::--==+***########***++==--:::......:::::::::-----------------==========++++++++++++++*************************########################################################################################################################################*************+==--::.:::--=++*+++==-:::.....................................::-==+****######################################################################*******************************************#################################################################################################################################################***********************************************************************####################**************************####################################################**********************************##################****************************************************************************************************************************************************************************************************************************#######################################################################*******************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================----------++++++--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
........................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------=====+++++++++++================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=.......................................................................................................................................................................:::--=======---::::........................................::::--=======---::...................::::::::::::::::-------------------------------------------------------------------------------------------------------------===================------------------------------======================-----------------------------------------------------------------------------------------#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@###*++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%################################%#############################*++*#################*#****++**#*******++++++========+++=-----------------:.   .:::::-============+++++++++*+=================+*+*********+++++++++=+*+====+**++++*******++++++++++++++=================---===--:::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.         . .::::::::. ...........::::::::::::::::::...............................................................................................................................................................................................................................::::::::--------------------------::::::..................................................................................................................................................:::::::::::::::::............................................................................::--=================================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------::::................................................................::--==++**########***++==--:::..:::::::-------================+++++++++++++***************************################################################################################################################################################************++=--:::::::--=++**++==-:::.....................................::--=++***######################################################################********************************************#############################################################################################################################################**********************************************************************########################***************************#####################*****########################***********************************##################**************************************************************************************************************************************************************************************************************************########################################################################*********************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++=======================================-==--------==+++++=--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................
.......................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------=====++++++++++++===============================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-......................................................................................................................................................................::::----=----:::::..........................................::::----------:::...................::::::::::::::::-------------------------------------------------------------------------------------------------------------===================-------------------------------=====================----------------------------------------------------------------------------------------+@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%##*++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%################################%#############################*++*#################*#****++***********+++++=========++=-------------:-::.    .::::::-===========+++++++++*+=================++**********+++++++++==+*+===+**++++*******++++++++++++++=================--======-::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.          ..:::::::::............::::::::::::::::::................................................................................................................................................................................................................................::::::::-------------------------:::::......................................................................................................................................................:::::::...................................................................................::--=================================================================================================================================----------------------------------------------------------------------------------------------------==------------------------------------------------::::.................................................................::--==++**########***++==--:::::::------======++++++++++++++++++++**************************#########################################################################################################################################################***********++==--::..:::--=++**++==-:::.....................................:::-==+****#####################################################################********************************************#############################################################################################################################***###########*********************************************************************###########################****************************############**************######################************************************##################*************************************************************************************************************************************************************************************************************************################################***#####################################**********************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++=======================================---=====--=++++++=--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................
.....................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------====+++++++++++++===============================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:......................................................................................................................................................................::::------::::::.............................................::::-----::::....................::::::::::::::::--------------------------------------------------------------------------------------------------------------===================---------------------------------===================----------------------------------------------------------------------------------------%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%##**+++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%################################%#############################*++*#################*#**#*+++**#*******+++++=========++=---::::------:-::.    .:::::.:============+++++++++*==================+***********++++++++==+*+===+***+++******+++++++++++++++==========================-::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.         . :::::::::.............:::::::::::::::::..................................................................................................................................................................................................................................:::::::::---------------------:::::.................................................................................................................................................................................................................................................::--=================================================================================================================================------------------------------------------------------------------------------------------------=========---------------------------------------------::::..................................................................::--==++***#######****++=---::----=====++++++++*****+**********************#########################################################################################################################################################################**********++==--:::...::--=++**++==-:::......................................::--=+****####################################################################**********************************************#########################################################################################################################***********************************************************************************##############################*****************************###**********************######################************************************##################************************************************************************************************************************************************************************************************************************########################****************************************************************************************************************************************************************************************++++++++***********************************************************************************************************************++++++++++++++++++++++++++++++++++=======================================-====+=====++++++=--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
....................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------====+++++++++++++===============================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=.......................................................................................................................................................................:::::::::::::.................................................::::::::::.....................::::::::::::::----------------------------------------------------------------------------------------------------------------===================----------------------------------===================--------------------------------------------------------------------------------------#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%###*+++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%################################%%#############################+++##################***#*+++**#*******+++++=========++=--::..:--------::.     ::::...-===========+++++++++*+=================++**********++++++++===+*====***++++*****+++++++++++++++====================----==-::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.           .::::::::. ............::::::::::::::::...................................................................................................................................................................................................................................::::::::::------------------::::::.................................................................................................................................................................................................................................................::--=================================================================================================================================----------------------------------------------------------------------------------------------==============-------------------------------------------:::...................................................................::--==++**########****++==----====+++++++***************************###############################################################################################################################################################################*********++==--:::....::--=++***++=-:::......................................::--=++***####################################################################***********************************************#######################################################################################################################**********************************************************************************#################################******************************#***********************#####################************************************##################***********************************************************************************************************************************************************************************************************************####################*******************************************************************************************************************************************************************************************++++++++++++*********************************************************************************************************************++++++++++++++++++++++++++++++++++=======================================-==+++++==+++++++=--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------=====+++++++++++++==============================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-.......................................................................................................................................................................:::::::::::......................................................::........................:::::::::::::::----------------------------------------------------------------------------------------------------------------===================-----------------------------------==================-------------------------------------------------------------------------------------+@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%###*++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%###############################%%#############################*++*#################***#*+++**#*******+++++=========++==-:...:--------:.      .:::. .:===========+++++++++**==================+**********++++++++===+*+===***+++++***+++++++++++++++=====================-:--==-::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::       .  ..:::::::::..............:::::::::::::::......................................................................................................................................................................................................................................::::::::::--------------::::::.................................................................................................................................................................................................................................................:::--=================================================================================================================================---------------------------------------------------------------------------------------------================------------------------------------------:::....................................................................:::-==++***#######****++======++++**************************######################################################################################################################################################################################********++==--:::.....:::-=++***++=--::......................................:::-==+***####################################################################************************************************######################################################################################################################*******************************************************************************#####################################*****************************************************#####################************************************##################**********************************************************************************************************************************************************************************************************************##############*************************************************************************************************************************************************************************************************++++++++++++++*********************************************************************************************************************+++++++++++++++++++++++++++++++++======================================-==+++=+++++++++++=--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
.............................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------=====++++++++++++++=============================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================-----=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:.....................:::::::::::............::::::......................................................................................................................::::::::.................................................................................::::::::::::::-----------------------------------------------------------------------------------------------------------------===================------------------------------------=================-------------------------------------------------------------------------------------%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%###*++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%################################%#############################*++*#################*****+++**#*******+++++==========++=-:....--------:.      .:::.  :-==========+++++++++**+=================++**********+++++++====**===+***++++++++++++++++++++++====================-::-===-::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.  .   .   ..::::::::..............:::::::::::::::.......................................................................................................................................................................................................................................:::::::::::::---------::::::..................................................................................................................................................................................................................................................::---=================================================================================================================================--------------------------------------------------------------------------------------------=====++++++++=====-----------------------------------------:::.....................................................................::--==++***#######****++++++++************#######################################################################################################################################################################################################********++=--:::......:::-=++***++=--::.......................................::-==++**###################################################################*************************************************#######################################################################################################################*************************************************************************##########################################*****************************************************#####################************************************###################**********************************************************************************************************************************************************************************************************************#########****************************************************************************************************************************************************************************************************+++++++++++++++++*******************************************************************************************************************++++++++++++++++++++++++++++++++++=======================================++++++++++++++++=---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
............................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------=====++++++++++++++=============================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=...............:::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................................................................................::::::::::::::------------------------------------------------------------------------------------------------------------------===================-------------------------------------===============-------------------------------------------------------------------------------------#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%###*+++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%################################%#############################*++*#################*#***+++**********++++++=========++=-:....--------:.      .:::.  .-==========+++++++++***==================++**********++++++====+*+==+***++++++++++++++++++++++====================-::-==-::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  .     . ..:::::::::..............:::::::::::::::........................................................................................................................................................................................................................................:::::::::::::-------::::::...:..............................................................................................................................................................................................................................................::---=================================================================================================================================-------------------------------------------------------------------------------------------====+++++++++++=====----------------------------------------::::.....................................................................:::-==++***########*****+++********#############################################################################################################################################################################################################********+==--::.......:::-==+****+==-::.......................................::--=++***#################################################################**************************************************#######################################################################################################################***********************************************************************#############################################*****************************************************####################************************************###################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++******************************************************************************************************************++++++++++++++++++++++++++++++++++=======================================++++++++++++++++=---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................
...........................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------=====+++++++++++++++============================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:...............::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................................::::::::::::::------------------------------------------------------------------------------------------------------------------===================---------------------------------------============-------------------------------------------------------------------------------------=@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@###*++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%###############################%#############################*++*#################*##**+++***********+++++=========++=-:...:-------::.      .:::.  .-==========++++++++++**+==================+++********++++++=====**===***++++++++++++++++++++++=====================:-===-::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. . .. ...  .::::::::..............:::::::::::::::...........................................................................................................................................................................................................................................:::::::::::-----:::::::::::::............................................................................................................................................................................................................................................::---=================================================================================================================================-------------------------------------------------------------------------------------------====+++++++++++++====---------------------------------------::::......................................................................:::-==++***########**********##################################################################################################################################################################################################################********+==-:::........::-==+****+==-::.......................................:::-=++***#################################################################****************************************************#####################################################################################################################********************************************************************################################################*****************************************************####################************************************###################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++******************************************************************************************************************++++++++++++++++++++++++++++++++++=====================================++++++++++++++++++=---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................
........................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------=====++++++++++++++===========================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=..............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................................::::::::::::::-------------------------------------------------------------------------------------------------------------------===================---------------------------------------===========--------------------------------------------------------------------------------------%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%##*+++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%###############################%##############################*++*################*###*+++**********++++++=========++==-::::-------::.      .:::.  .-========+==++++++++++*+===================++********++++++=====+*+==+***++++++++++++++++++++=====================---==-:::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::     .. ....::::::::: .............::::::::::::::...............................................................................................................................................................................................................................................::::::::----::::::..:::::::..........................................................................................................................................................................................................................................::---=================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++===--------------------------------------:::::.......................................................................:::--=++***#########*******####################################################################################################################################################################################################################*******+==-:::........::-==+****+==-::........................................::-==+***################################################################******************************************************####################################################################################################################*****************************************************************##################################################*****************************************************######################***********************************###################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++*****************************************************************************************************************++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
........................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------=====++++++++++++++===========================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================-------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-.............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................................................................::::..................................:::::::::::::::-------------------------------------------------------------------------------------------------------------------===================----------------------------------------=========--------------------------------------------------------------------------------------*@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%##**+++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%##############################*++*################*###*+++***********+++++=======-=+++=------------::.      .::::..:-========++==+++++++++**+==================+++********+++++=====+*+==+***++++++++++++++++++++==========================--::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   . .... ..:::::::::..............::::::::::::::.................................................................................................................................................................................................................................................::::::----::::::..::::::::.........................................................................................................................................................................................................................................::---=================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++====-------------------------------------:::::........................................................................:::-==++***##########***######################################################################################################################################################################################################################*******+==-:::........::--=++***++=-::........................................::--=+***################################################################*******************************************************##################################################################################################################***************************************************************#####################################################*****************************************************######################***********************************###################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++****************************************************************************************************************++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
......................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------=====+++++++++++++++==========================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================-------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=:............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................................................................::::::::::...............................::::::::::-:::--------------------------------------------------------------------------------------------------------------------====================---------------------------------------------==---------------------------------------------------------------------------------------=@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%###*++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%#############################*++**###################*+++***********++++++======-==++=------------::.      .:::::::-=========+++++++++++++*+===================+++*******+++++======+*+=++**++++++++++++++++++++===========================-:::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .. . .  . .:::::::::..............::::::::::::...................................................................................................................................................................................................................................................:::::---:::::::..:::::::::::......................................................................................................................................................................................................................................::---=================================================================================================================================------------------------------------------------------------------------------------------===+++++++++++++++++===-------------------------------------:::::.........................................................................:::--=++***##################################################################################################################################################################################################################################*******++=-:::........::--=++***++=--::.......................................::--=++**###############################################################**********************************************************################################################################################################################************************************************************#########################################################****************************************************######################***********************************###################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++=++***************************************************************************************************************++++++++++++++++++++++++++++++++++==================================+==+++++++++++++++++----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
....................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------=====++++++***+++++++======================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+==================-------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................::::::::::::::............................::::::::::-------------------------------------------------------------------------------------------------------------------------====================--------------------------------------------------------------------------------------------------------------------------------------#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%###*++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%##############################+++*#################*#**++***********++++++=========++=-------------::      .:::::::-===+=====+++++++++++++**====================++*******++++=======+*+==+*+++++++++++++++++++++======================----=-:::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .  . .  ...:::::::::..............::::::::::::....................................................................................................................................................................................................................................................::::----:::::...:::::::::::::....................................................................................................................................................................................................................................::---================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++++===-------------------------------------:::::..........................................................................:::--=++***##################################################################################################################################################################################################################################******++=--::........::--=++***++=--::.......................................:::-=++***#############################################################*************************************************************#############################################################################################################***********************************************************###########################################################****************************************************#######################**********************************###################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++***************************************************************************************************************+++++++++++++++++++++++++++++++++==================================+==+++++++++++++++++=---------:::::::::::::::..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
..................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------======++++++***++++++++====================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================--------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=:...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................::::::::::::::::::::........................::::::::::--------------------------------------------------------------------------------------------------------------------------====================------------------------------------------------------------------------------------------------------------------------------------:+@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@###*+++++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%##############################*++*#################*#**+++**********++++++=========++==-------------:.     .::::-:--===++===+++++++++++++*+*+====================++*******+++========+*==+++++++++++++++++++++++=====================--::-==:::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.  ..........::::::::. .............:::::::::::....................................................................................................................................................................................................................................................::::----::::......::::::::::::...................................................................................................................................................................................................................................::---================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++++===-------------------------------------::::.............................................................................::--==++***#################################################################################################################################################################*##############################################################******++=--::........::--=++****+==-::.......................................:::-=++***############################################################**************************************************************############################################################################################################**********************************************************##############################################################***************************************************#######################**********************************###################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++**************************************************************************************************************++++++++++++++++++++++++++++++++++================================+====++++++++++++++++=---------:::::::::::::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------========+++++****+++++++===================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================--------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................::::::::...........::::::::::::::::::::::::::....................:::::::::::---------------------------------------------------------------------------------------------------------------------------====================-------------------------------------------------------------------------------------------------------------------------------------%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@####*++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%##############################*++**################*#**+++***********+++++=========++==--------------:..  ..:-------=+++++==+++++++++++++*+*+====================+++******+++=========+==++++++++++++++++++++++======================-:::-==:::::::::::::::::-------::::::::::::-===-::::::::::::::::::::::::::::::::::::::::::::::::::::::. . ..... ...::::::::: ..............:::::::::.....................................................................................................................................................................................................................................................::::---:::::.......::::::::::::..................................................................................................................................................................................................................................::---================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++++===-------------------------------------::::.............................................................................:::--==++**############################################################################################################################***************################**********###########################################################*******+==-::........:::-==+****++=-::......................................:::--=++***###########################################################*****************************************************************#########################################################################################################**********************************************************################################################################***************************************************#######################*********************************####################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++*************************************************************************************************************++++++++++++++++++++++++++++++++++=====================================++++++++++++++++=---------:::::::::::.........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
..............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------========+++++*****+++++++=================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================---------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=.............:::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::.................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::.............:::::::::::::----------------------------------------------------------------------------------------------------------------------------====================-----------------------------------------------------------------------------------------------------------------------------------:+@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%###*+++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%##############################*+++*################*#**+++***********+++++=========+++=--------------::....::---:--=+++++++++++++++++++++++*+=====================++*******++=============+++++++++++++++++++++======================-:::-=-::::::::::::::::::------:::::::::::=+==++======-::::::::::::::::::::::::::::::::::::::::::::::::. ...........::::::::................::::::::.....................................................................................................................................................................................................................................................::::---:::::........::::::::::::.................................................................................................................................................................................................................................::--=================================================================================================================================------------------------------------------------------------------------------------------===+++++++++++++++++++==------------------------------------:::::...............................................................................::--==++***##################################################################################################################***************************###*********************#########################################################*******++=-::.........::-==+****++=-:::...........................::::.::::::::--=+****##########################################################**************++++++++++*******************************************########################################################################################################*********************************************************#################################################################***************************************************########################******####**********************####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++=++*************************************************************************************************************+++++++++++++++++++++++++++++++++=====================================+++++++++++++++++---------:::::::::::..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
.............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------========+++++******+++++++============++++++==============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================---------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-............::::::::::::::::::::::::::::::::::::::::::::--------------------:::::::::::::::::::::::::::::::::::::::...........................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------====================------------------------------------------------------------------------------------------------------------------------------------#@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%###*+++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%###############################+++*################*#**+++***********++++++========+++==------------:-:::::::-------++++++++++++++++++++++**++====================++*******+++============+++++++====++++++++++======================-::-==-::::::::::::::::::------:::::::::-====-====++++++=--::::::::::::::::::::::::::::::::::::::::::::. . .........::::::::: ..............::::::::.....................................................................................................................................................................................................................................................::::----::::.........::::::::::::................................................................................................................................................................................................................................::--=================================================================================================================================------------------------------------------------------------------------------------------===+++++++++++++++++++==------------------------------------:::::................................................................................::--==++***############################################################################################################***************++++++++++********************++++++******########################################################*#*****++=-:::........::-==+****++=--::......................:::::::::::::::::--==+****##########################################################************++++++++++++++++++++++++*******************************########################################################################################################*********************************************************##################################################################**************************************************###################################*********************####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++*************************************************************************************************************+++++++++++++++++++++++++++++++++=================================+===+++++++++++++++=+----------::::::::::..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
....................................:.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------=========+++++******+++++++===========++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================---------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=.............:::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::::::::::::::::.................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------====================------------------------------------------------------------------------------------------------------------------------------------%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%###*+++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%##############################*++*##################**+++***********++++++=========++==---------------::::---------=+++++++++++++++++++*+*+++====================+++****+**++============+++++=======+++++++++======================---===-::::::::::::::::::-------:::::::=+=----=======++++++=-:::::::::::::::::::::::::::::::::::::::::::  ..........:::::::::.................:::::......................................................................................................................................................................................................................................................::::----::::..........::::::::::::...............................................................................................................................................................................................................................::--=================================================================================================================================------------------------------------------------------------------------------------------===++++++++++++++++++===-----------------------------------:::::..................................................................................:::-==++**########################################################################################################************++++++++++++==+++++++**********++++++++++++++****#########################################################******++=--::........::--=++****+=--::................::::::::::::------------==++***###########################################################***********++++++++++++++++++++++++++++++++++++++++*****************####################*##################################################################################********************************************************###################################################################**************************************************####################################********************####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++***********************************************************************************************************++++++++++++++++++++++++++++++++++====================================++++++++++++++++=---------:::::::::::.........::::::::::::::::::::::::::::::-::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
.........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------===========+++++*******+++++++==========++++++++===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================----------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:............:::::::::::::::::::::::::::::::::::::::::----------------------------------------:::::::::::::::::::::::::::::::::::::::......................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------===================------------------------------------------------------------------------------------------------------------------------------------*@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%####*+++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%##############################*++*##################**+++***********++++++=========++==----------------------------=+++++++++++++++++++*+++++=====================+++******++============++++========++++++++=============================-::::::::::::::::::-------:::::-++--=--==========+++++++=-::::::::::::::::::::::::::::::::::::::::. ...........::::::::..................:::.......................................................................................................................................................................................................................................................::::---:::::...........:::::::::::...............................................................................................................................................................................................................................::--=================================================================================================================================------------------------------------------------------------------------------------------===++++++++++++++++++===-----------------------------------:::::...................................................................................::--==++**##################################################################################################*************+++++++================++++++++++++++++========+++***#########################################################******++==-::........::--=++****+==-:::......:::::::::::::::---------------====++****###########################################################************+++++++===========++++++++++++++++++++++++++++++++******#################***********###########################################################################********************************************************###################################################################**************************************************####################################********************####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++**********************************************************************************************************++++++++++++++++++++++++++++++++++====================================++++++++++++++++=---------:::::::::::.........::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
.........::::::::::::...............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------=============++++*******++++++++=======++++++++++++=========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================----------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=.............:::::::::::::::::::::::::::::::::::::::::------------------------------------------------::::::::::::::::::::::::::::::::::::::............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------===================-----------=------------------------------------------------------------------------------------------------------------------------%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%####*++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%##############################*+++##################**+++************++++++========+++==----------------------------+++++++++++++++++++++++*++====================+++******++============+++=========++++++++=============================-::::::::::::::::::-------::::-+=-=--====--==--====++++++++=---::::::::::::::::::::::::::::::::::::............:::::::::..................:........................................................................................................................................................................................................................................................::::---::::..............:::::::::...............................................................................................................................................................................................................................::--=================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++++===----------------------------------::::::....................................................................................::--==+***###########################################################################################************++++++++=======--------------=====+++++=======-------==++***##########################################################******+==-::........:::-=++****++=--:::::::::::::::::--------==============++++*****###########################################################************++++++======--======================++++++++++++++++*****##############****************#######################################################################********************************************************#####################################################################*************************************************#####################################*******************####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++*********************************************************************************************************++++++++++++++++++++++++++++++++++====================================++++++++++++++++=---------:::::::::::.........::::::::::::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
.......::::::::::::::::............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------================++++********++++++++===++++++++++++++++=====================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================-----------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=:.............:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------:::::::::::::::::::::::::::::::.....................::::::::::::::::::::::::::::::::::::::::::::::::-----------:::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------===================----------====----------------------------------------------------------------------------------------------------------------------%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%##*#*+++++++++++++++++++++++++++*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%###############################+++*#################**+++************++++++========+++==----------------------------++++++++++++++++++++*+**++====================+++******++============++==========++++++++=========================--==-:::::::::::::::::::-------::=+=-=-------========--===+++++++===--:::::::::::::::::::::::::::::::::. ..........:::::::::...........................................................................................................................................................................................................................................................................::::---::::................::::::...............................................................................................................................................................................................................................:::--=================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++++===---------------------------------::::::......................................................................................::--=++**#################################################################################*****************++++++++======---------::::::::::-----=======--------------==+***##########################################################******++=--::.......:::-=++****++==--::::::::-----------======+++++++++++++++******#############################################################************+++++===------------------=======================++++***#############*****++++***********####################################################################********************************************************######################################################################************************************************#####################################*******************####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++**********************************************************************************************************++++++++++++++++++++++++++++++++++====================================+++++++++++++++=---------::::::::::::........:::::::::::::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------===================++++*********++++++++=++++++++++++++++++==================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================-----------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-.............:::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------::::::::::::::::::::::::::::::................:::::::::::::::::::::::::::::::::::::::::::::--------------------::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------===================----------======-------------------------------------------------------------------------------------------------------------------+@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%#*#**+++++++++++++++++++++++++++*#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%###############################*++*################***+++************++++++========+++===---------------------------++++++++++++++++++++*+***+====================+++*****+++============+===========++++++++========================-:-==-:::::::::::::::::::--------=+=--==-=----=====--===--===++++===++=-::::::::::::::::::::::::::::::::: ...........:::::::-...........................................................................................................................................................................................................................................................................:::::::::::.....................................................................................................................................................................................................................................................:::--=================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++++===--------------------------------:::::::.......................................................................................::--=+***######################################################**************************************++++++++======-------:::::::::::::::::::::----------::::::::::--==+***#########################################################*******++==-:::.....::::-=++*****++=--------------========++++++++++++++**********################################################################************++++===----::::::---------------------------======++***#############***+++++++++++************##############################################################********************************************************######################################################################*************************************************####################################*******************####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=+++*********************************************************************************************************++++++++++++++++++++++++++++++++++====================================+++++++++++++++=----------:::::::::::.......:::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------======================++++********++++++++++++++++++++++++++++================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=..............::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------:::::::::::::::::::::::::::::.........:::::::::::::::::::::::::::::::::::::::::::::::----------------------------::::::::------------------------------------------------------------------------------------------------------------------------------------===================----------========----------------------------------------------------------------------------------------------------------------:#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%####*+++++++++++++++++++++++++++++#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%###############################*++*###############****++++***********+++++++=======+++===-=-------------------------+*+++++***++++++++++*+****+===================+++*****+++============+===========++++++++======================--::-==-:::::::::::::::::::-------=+-==--=--=----==-=====---========--=++=-::::::::::::::::::::::::::::::::............:::::::::..........................................................................................................................................................................................................................................................................::::::::::......................................................................................................................................................................................................................................................:::--================================================================================================================================-------------------------------------------------------------------------------------------====+++++++++++++++++===-------------------------------:::::::.........................................................................................::-=++**###################################***************************************************++++++++=======------:::::::::::.............::::::::::::::::::::::::--=+***#########################################################********++=--::::...:::--=++*****++====----========++++++++++*******************###################################################################*************+++==--::::::::::::::::::::::------------------==++***###########***++========++++++***********###########################################################*******************************************************#######################################################################*************************************************####################################*******************#####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=+++*********************************************************************************************************++++++++++++++++++++++++++++++++++===================================+++++++++++++++-----------:::::::::::.......::::::::::::::::::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------======================++++*********+++++++++++++++++++++++++++++============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-..............::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------::::::::::::::::::::::::...::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================---------=============-----------------------------------------------------------------------------------------------------------:-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%####*++++++++++++++++++++++++++++++*%@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%################################++*###############**#*++++************++++++========+++====-------------------------+*+**********+++++++++*+**+===================+++****++++============+===========+++++++++=====================-:::-==-::::::::::::::::::::------=---===-=-==-------==---===--===---=-=++=::::::::::::::::::::::::::::::::.............::::::::..........................................::::............................................................................................................................................................................................................................:::::::::.......................................................................................................................................................................................................................................................:::--================================================================================================================================-------------------------------------------------------------------------------------------====+++++++++++++++++===------------------------------:::::::..........................................................................................::-==+**######******************************************************+++++++++++++++++++++++++++========-------::::::::::......................::::::::::.........::--=+***##########################################################*******++==--::::::::--==++******+++======+++++++++++*********************###########################################################################****#******+++=---:::::::::::::::::::::::::::::::::::::---==++**##########***++===----======+++++++************#####################################################*******************************************************#######################################################################*************************************************#####################################******************#####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++********************************************************************************************************++++++++++++++++++++++++++++++++++===================================+++++++++++++++-----------:::::::::::.......::::::::::::::::::::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------=======================++++*********++++++++++++++++++++++++++++++===========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=..............::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================---------==============----------------------------------------------------------------------------------------------------------:=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%##*#*++++++++++++++++++++++++++++++++#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%###############################++*###############**#*++=+************+++++++=======+++====-------------------------+*************+++++*+**+***===================+++***+++++============+===========+++++++++======================--===-:::::::::::::::::::::-------====-==--=----=---==--=---==---=----=+=+-:::::::::::::::::::::::::::::::: ...........:::::::::.......................... .............::::::::..........................................................................................................................................................................................................................:::::::............................................................................................................................................................................... ........................................................................:::--================================================================================================================================-------------------------------------------------------------------------------------------====+++++++++++++++++===-----------------------------::::::::..........................................................................................::--=+**************************************+++++++++++++++++++++++++++++++++++==================--------:::::::::...............................................::--=+***##########################################################********++==---::::---===++*******++++++++++****************************##################################################################################*******++==--:::::...........:::::::::::::::::::::::--==+***#########***++==----------======++++++***********##################################################******************************************************########################################################################*************************************************#####################################******************#####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++=++*******************************************************************************************************++++++++++++++++++++++++++++++++++====================================++++++++++++++-----------:::::::::::.......:::::::::::::::::::::::::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
..::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------==========================+++++*********+++++++++++++++++++++++++++++========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:...............::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================---------================-------------------------------------------------------------------------------------------------------::*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@####**++++++++++++++++++++++++++++++++*%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%###############################*++*##############*##**+++****+********++++++=======+++======-----------------------+**************++**+*******+==================++****+++++========================+++++++++===========================-:::::::::::::::::::::-------============---------------------=--=++==::::::::::::::::::::::::::::::::.. ..... . .:::::::::............................... .........:::::::::........................................................................................................................................................................................................................::::::.........................................................................................................................................................................................................................................................::---================================================================================================================================-------------------------------------------------------------------------------------------====+++++++++++++++++====---------------------------::::::::............................................................................................:--=+*****************++++++++++++++++++++++++++++++=============================-----------------:::::::::::...................................................::--=+***###########################################################********++===-------==+++*********************************#################################################################################################******++==--:::..............................::::::--=++**#########***++=----:::::------======++++************###############################################******************************************************######################################################################***************************************************#####################################******************#####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++*******************************************************************************************************++++++++++++++++++++++++++++++++++===================================++++++++++++++-----------::::::::::::......::::::::::::::::::::::::::-------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
..:::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------=============================++++*********++++++++++++++++++++++++++++++=======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-...............::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================----------================-------------------------------------------------------------------------------------------------------:-%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@#####*+++++++++++++++++++++++++++++++++*#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%###############################*++*##############*##**+++****+********+++++++======+++======-----------------------+**************************+==================++****+++++============++==========+++++++++===========================-::::::::::::::::::::--------============---------------------=---=+++-::::::::::::::::::::::::::::::::............::::::::..........................  ... .........:::::::::::.........................................................................................................................................................................................................................:...........................................................................................................................................................................................................................................................::---================================================================================================================================-------------------------------------------------------------------------------------------====+++++++++++++++++===---------------------------:::::::::............................................................................................:--=+*******++++++++++++++++++============================-------------------------------::::::::::::::.........................................................::--=+***###########################################################*********+++=========+++*****************************#######################################################################################################*****+++=--:::.................................:::--==+***#########**++==---:::::::::-------===+++++***********#############################################******************************************************#####################################################################****************************************************#####################################******************#####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++******************************************************************************************************++++++++++++++++++++++++++++++++++====================================+++++++++++++-----------::::::::::::......:::::::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
..::::::------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------================================++++**********++++++++++++++++++++++++++++++====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================-------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=...............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================-----------================-----------------------------------------------------------------------------------------------------::+@%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@%####*+++++++++++++++++++++++++++++++++++*%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%###############################*++*#################**+++****++*******+++++++======++++======----------------------+***************************==================+*****+++++============++===========+++++++++=====================---==-::::::::::::::::::-=+-------=============---------------------=-==+++=::::::::::::::::::::::::::::::::............:::::::::........................    .  .........:::::::::::::...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::---================================================================================================================================--------------------------------------------------------------------------------------------===+++++++++++++++++===-------------------------:::::::::..............................................................................................:--=+*****+++==================-------------------------------::::::::::::::::::::::::::::::::::................................................................::--=+***###########################################################**********++++++++++++**********************###################################################################################################################***++==-:::..................................:::--=++***########***++==---::::::::::::-----====++++++*********###########################################*******************************************************##################################################################******************************************************#####################################*******************####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++=+*****************************************************************************************************++++++++++++++++++++++++++++++++++====================================+++++++++++++-----------::::::::::::......::::::::::::::::::::::::-----------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............
.:::::::-----=====-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------==================================++++**********+++++++++++++++++++++++++++++++================++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================-------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:...............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================-----------================-----------------------------------------------------------------------------------------------------::#%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@%#####+++++++++++++++++++++++++++++++++++++#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%################################*+*##################*+++****++********+++++++=====++++======----------------------=***************************+=================+****++++++===========++++===========++++++++====================--::-==:::::::::::::::::-+++-------==============--------------------=--=+++=:::::::::::::::::::::::::::::::::...........:::::::::.......................        .........::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::---================================================================================================================================--------------------------------------------------------------------------------------------===+++++++++++++++++===------------------------::::::::::..............................................................................................:--=++**+++===--------------------------::::::::::::::::::::::::::::::::::::::::................................................................................::--=+***###########################################################*************++++++******************##########################################################################################################################****+==--::...................................:::-==++***#######***+++==---::::::::::::::----====++++++++*******#########################################********************************************************################################################################*******************************************************#####################################*******************####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=+*****************************************************************************************************+++++++++++++++++++++++++++++++++======================================+++++++++++----------:::::::::::::......:::::::::::::::::::::---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............
::::::::---========------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------====================================++++***********++++++++++++++++++++++++++++++===============++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================--------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================------------===============------------------------------------------------------------------------------------------------------=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@%#####*+++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%################################*+*################*#*+++****++********+++++++======+++=======---------------------=***************************+================+*****+++++++==========+++++==========+++++++=====================-:::-==::::::::::::::::-+*==-------===============-----------------------=+++:::::::::::::::::::::::::::::::::. ..........::-::::::......................         .........:::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................                ..  ..................................................::---================================================================================================================================---------------------------------------------------------------------------------------------===++++++++++++++++====----------------------:::::::::................................................................................................:--=++*+++==-------:::::::::::::::::::::::::::::::::::::::......................................................................................................::--=+***###########################################################***********************************############################################################################################################################****++=--::...................................:::--==++****######****++===--::::::...::::::---=====+++++++********#######################################********************************************************################################################################*******************************************************#####################################*******************####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++=+==+****************************************************************************************************+++++++++++++++++++++++++++++++++======================================+++++++++++----------:::::::::::::......:::::::::::::::::::------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............
:::::::---============------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------========================================++++**********++++++++++++++++++++++++++++++++============+++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================---------------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=.................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================--------------==============-----------------------------------------------------------------------------------------------------:*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@%#####*+++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%###############################*++*###############*#*+++****+++********+++++++=====++++======---------------------=****************************================+*****+++++++==========++++++==========+++++======================-::-==-:::::::::::::::=++=-==----===================-------------=========+++-::::::::::::::::::::::::::::::::: ..........:::::::::......................         .........:::::::::::::::::::...................................................................................................................................................................................................................................................................................................................................................................................................                        .................................................::---================================================================================================================================---------------------------------------------------------------------------------------------====+++++++++++++++===-----------------------:::::::::................................................................................................:--=+++++==-:::::::::::::::::::::...............................................................................................................................::--=+***###########################################################*********************************##############################################################################################################################*****+==-:::...................................:::--==++*****#####****+++===--::::......::::--=======+++++++*******######################################*********************************************************##############################################################********************************************************#####################################*******************#####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++=++++****************************************************************************************************++++++++++++++++++++++++++++++++======================================+++++++++++----------::::::::::::::.....:::::::::::::::-----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............
:::::::---=======================----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------==========================================++++**********+++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================---------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================----------------============------------------------------------------------------------------------------------------------------%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%######*++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%################################++*###############*#*++++#**+++********+++++++=====++++=======--------------------=****************************+===============+****++++++++========+++++++++==========++========================---===-::::::::::::::=++=-==========================-------------======++++++-:::::::::::::::::::::::::::::::::...........:::::::::.....................          ..........:::::::::::::::::::......................................................................................................................................................................................::........................................................................................................................................................................................................                           ................................................::---================================================================================================================================----------------------------------------------------------------------------------------------====++++++++++++++===-----------------------::::::::.................................................................................................:--=+++++=--:::.................................................................................................................................................::--=+***############################################################*********####****#######*******##############################################################################################################################******+==-:::....................................:::--===++****#####*****+++==--::::.....::::---========++++++********####################################*********************************************************##########################################################************************************************************#####################################*******************#####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++==+=++***************************************************************************************************+++++++++++++++++++++++++++++++++=====================================+++++++++++----------::::::::::::::.....::::::::::::::-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............
::::::----=========================----------------:::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------============================================++++**********++++++++++++++++++++++++++++++++++===+=====+++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================----------------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================----------------============-----------------------------------------------------------------------------------------------------+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%######*+++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%################################*+*#################*++++****++********++++++++====++++=======--------------------=****************************+==============+*****++++++++=======+++++++++++========================================-::::::::::::::=++=============================-------=----=====-=++++++=::::::::::::::::::::::::::::::::::...........:::::::::...................           ..........:::::::::::::::::::::...................................................................................................................................................................................::::......................................................................................................................................................................................................                            ................................................::---================================================================================================================================----------------------------------------------------------------------------------------------=====+++++++++++++===----------------------:::::::::.................................................................................................:--=++++==-::...................................................................................................................................................::--=+***############################################################**********##########*####*****###############################################################################################################**********************+==-:::....................................::::---==+++***######*****++==--::::.....::::--==========++++++*******###################################*********************************************************#########################################################*************************************************************#####################################*******************#####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++=++===+++*************************************************************************************************++++++++++++++++++++++++++++++++++====================================+++++++++++----------::::::::::::::.....:::::::::::::----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
::::::---============================----------------:::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------=============================================++++**********+++++++++++++++++++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================---------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.................:..:.:::::::::::::::::::::::::::::::::::::::::-----:::::::::::::-------------------------------------------------------------------------------------------------------------:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================------------------==========----------------------------------------------------------------------------------------------------:#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@%*####*+++++++++++++++++++++++++++++++++++++++*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%################################*+*#################*++++****++*********+++++++====+*++========--------------------****************************+==============+*****++++++++=======+++++++++++++====================================---:::::::::::::=*+================================------=-===--==-+++++++=::::::::::::::::::::::::::::::::::...........:::::::::..................            ..........::::::::::::::::::::::..................................................................................................................................................................................::::....................................................................................................................................................................................................               .                ..............................................::---================================================================================================================================-----------------------------------------------------------------------------------------------====+++++++++++++===----------------------::::::::::...............................................................................................::-==++++==-::...................................................................................................................................................::--=++***###########################################################********##############################################################################################################################****************************++=--:::.....................................::::----==++****######****++==--:::......:::--==========+++++++********#################################************************************************************################################################********************************************************************#####################################******************#####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=====++*************************************************************************************************+++++++++++++++++++++++++++++++++=====================================+++++++++=-----------::::::::::::::....::::::::::::----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
:::::----==============================--------------:::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------===============================================+++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================----------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++............:.....:..:::::::::::::::::::::::::::::::::::::--==+++**+-::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================------------------=========------------------------------------------------------------------------------------------------------%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%#####*++++++++++++++++++++++++++++++++++++*++****%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%################################*+*#################*++++**#*++*********+++++++====+*+++=======--------------------+***************************+==============******++++++++=======+++++++++++++======================================-:::::::::::-+++=================================------------===-+++**++=-:::::::::::::::::::::::::::::::::............::::::::..................            .............:::::::::::::::::::::...............................................................................................................................................................................::::::...................................................................................................................................................................................................                                ..............................................::---================================================================================================================================------------------------------------------------------------------------------------------------====++++++++++++===----------------------::::::::::...............................................................................................::-==++++==-::...................................................................................................................................................::--=++***###########################################################********########################################################################################################################********************************+++==--:::......................................:::::---===++*****####*****+==--:::.....:::--====+++++++++++++++********###############################************************************************************###############################################*********************************************************************#####################################******************#####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=====++++***********************************************************************************************+++++++++++++++++++++++++++++++++=====================================+++++++++=-----------::::::::::::::::::::::::::::::----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
:::::---=================================-------------:::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------===================================================++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================----------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...............::..::::::::::::::::::::::::::::::::::-==++***+*****+=:::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================-------------------======-------------------------------------------------------------------------------------------------------+@*%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%######*++++++++++++++++++++++++++++++++++*+*****#@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%#################################++#################*++++**#*+++********++++++++===+*+++=======--------------------+****************************=============+******+++++++++=====+++*++**+++++++++=============================----==-::::::::::-+++==================================----------===-==+****+++-::::::::::::::::::::::::::::::::::...........:::::::::.................            ..............::::::::::::::::::::::.............................................................................................................................................................................::::::...................................................................................................................................................................................................                                ..............................................::---================================================================================================================================-------------------------------------------------------------------------------------------------====++++++++++====----------------------:::::::::::..............................................................................................::-==+**++=-::...................................................................................................................................................::--=++**############################################################********################################################################################################################************************+++++++++++++++++++==--:::........................................:::::---==+++*****#*******+==-:::.....:::--==++++++++++++++++++*********#############################************************************************************#######################################***####**********************************************************************######################################*****************#####################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++=====+==++**********************************************************************************************++++++++++++++++++++++++++++++++++====================================+++++++++=-----------::::::::::::::::::::::::::::::-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
::::---====================================-------------:::::::::::::::::::::::::::::::::::-------------------------------------------------------------=====================================================++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================-----------------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.............:...::::.::::::::::::::::::::::::::::-=++****+++*+*++**+-::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================--------------------===---------------------------------------------------------------------------------------------------------#%+%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%######*++++++++++++++++++++++++++++++++++******%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%#################################*+*#################++++**#*+++*********+++++++====++++========-------------------+****************************+============+******++++++++++====+++******+++++++++============================-::-==-:::::::::-++====================================--------==---=-=+*****++-::::::::::::::::::::::::::::::::::...........:::::::::...............              ................:::::::::::::::::::::............................................................................................................................................................................::::::...................................................................................................................................................................................................                                ..............................................::---===============================================================================================================================---------------------------------------------------------------------------------------------------====+++++++++===------------------------:::::::::::.............................................................................................::-=++**++=-::...................................................................................................................................................::--=++**############################################################********##########################################################################################################*****************++++++++++++++++++++++++++======---:::...........................................:::::--===++*******#****++=--:::....:::--==+++++++++++++++++++***********##########################************************************************************######################################*******************************************#########**************************######################################*****************######################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=++++++++++++++++++++++++++++++++======++==++**********************************************************************************************+++++++++++++++++++++++++++++++++=====================================++++++++=-----------::::::::::::::::::::::::::::::------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
::----=====================================-------------:::::::::::::::::::::::::::::::::---------------------------------------------------------------=====================================================++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================-----------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..............:::.:..:....:::::::::::::::::::::-=+****+*+++++*+*****+-::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================---------------------------------------------------------------------------------------------------------------------------------%#+%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@######*++++++++++++++++++++++++++++++++******#%@@@@@%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%#################################*+*#################++++****+++*********+++++++=+==+*++========-------------------+****************************+============+******++++++++++++++***********++++++++============================--===-::::::::-++=====================================------=--======++**+***+-:::::::::::::::::::::::::::::::::::...........:::::::::..............              ....................:::::::::::::::::::..........................................................................................................................................................................::::::...................................................................................................................................................................................................                                ..............................................::---===============================================================================================================================----------------------------------------------------------------------------------------------------====+++++++====------------------------::::::::::::............................................................................................::-=++***+=-::...................................................................................................................................................:::-=++**############################################################********####################################################################################################****************+++++++++++++=======================-----:::..............................................::::---==+++***********++=-:::....:::--==+++++++++++++++++++++*********###########################*************************************************************####################################****************************************##############************************######################################*****************######################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++=======+==+++*********************************************************************************************++++++++++++++++++++++++++++++++++====================================++++++++------------::::::::::::::::::::::::::::::--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
:----======================================-------------:::::::::::::::::::::::::::::---------------------------------------------------------------==========================================================++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.............:==-::::.:::::::::::::::::::::::-++**++*++++****+*+***++-:::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================--------------------------------------------------------------------------------------------------------------------------------+@*+%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%##*###*++++++++++++++++++++++++++++++*****#%@@@@@%%**#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%################################*+*#################*+++****+++**********++++++++==+*+++========------------------=****************************+===========+******+++++++++++++++************+++++++================================-::::::::-++=====================================-------=----=++*********+=:::::::::::::::::::::::::::::::::::...........:::::::::.............              ........................:::::::::::::::::.........................................................................................................................................................................::::::...................................................................................................................................................................................................                                .............................................:::---===============================================================================================================================----------------------------------------------------------------------------------------------------====++++++====--------------------------::::::::::::...........................................................................................::-=+****+=-::....................................................................................................................................................::-=++**############################################################********###############################################################################################****************++++++++++==========-----------------------::::::................................................::::---==+++*********++=-:::....:::--==++++++++++++++++++++++**********#########################**************************************************************####################################***####***********************########################***********************######################################*****************######################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++=============+*********************************************************************************************++++++++++++++++++++++++++++++++++====================================++++++++------------::::::::::::::::::::::::::::::--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
----========================================------==-----::::::::::::::::::::::::::---------------------------------------------------------------============================================================++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++............:=++==-:.......:::::::::::::::-=++*++**++***+++*********+-::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================--------------------------------------------------------------------------------------------------------------------------------*@=+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%######*++++++++++++++++++++++++++++******#%@@@@@@#****##*#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%#################################**#################*+++****+++**********++++++++=++**++========------------------=****************************+===========+******+++++++++++++++*+***********+++++++==============================-::::::::-++====================================-=--------===+*****+++****+=::::::::::::::::::::::::::::::::::::...........::::::::.............              .........................::::::::::::::::::.......................................................................................................................................................................:::::::...................................................................................................................................................................................................                                ............................................:::--================================================================================================================================-----------------------------------------------------------------------------------------------------====++++====-----------------------------:::::::::::...............::.........................................................................::-=+****+=--:....................................................................................................................................................::-=++**############################################################********########################################################################################****************+++++++++=========-------------:::::::::::::::::::::::...................................................::::----===++++****++==-:::....:::--==+++*****+++++++++++++++++*********#######################***************************************************************###########################################***********###################################***********************######################################*****************######################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++=============+====++********************************************************************************************++++++++++++++++++++++++++++++++++====================================++++++++------------:::::::::::::::::::::::::::::-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
--==========================================-----====-----::::::::::::::::::::::----------------------------------------------------------------==============================================================++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============-------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++............-++=:::::.::.:::..::::::::::-++++*++++++++++++******+*+*+:::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================--------------------------------------------------------------------------------------------------------------------------------%%=*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%######*+++++++++++++++++++++++++++*****#%@@@@@@%#**************######%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%#################################**#################*++++****+++*********++++++++=++**++========------------------=*****************************==========+*******+++++++++++++*****+**********+++++++==============================:::::::-++====================================--=-------=++++**++********+=::::::::::::::::::::::::::::::::::::...........:::::::::...........               ...........................:::::::::::::::::......................................................................................................................................................................:::::::...................................................................................................................................................................................................                                ............................................::---================================================================================================================================------------------------------------------------------------------------------------------------------===++++===--------------------------------::::::::::............:::::........................................................................::-=+****+=--:....................................................................................................................................................::-=++**############################################################********#####################################################################################**************++++++++========----------::::::::::::::::::::::::::::::........................................................:::::--====++++++++==-:::....:::--==++**********+++++++++++++++********######################***************************************************************############################################**############################################**********************#######################################****************######################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++=============+==+==+********************************************************************************************+++++++++++++++++++++++++++++++++++===================================+++++++=------------:::::::::::::::::::::::::::::------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............
=============================================---=====------:::::::::::::::::------------------------------------------------------------------================================================================++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================-------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ..........:=-:......:..::...::::::.:-++++++++*+++++****+++********+=:::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================-------------------=----------------------------------------------------------------------------------------------------------=%#=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@###*###*+++++++++++++++++++++++++*****%@@@@@%@%#**********************#%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%#################################**#################*++++*##*+++*********+++++++++++**++=========------------------****************************+==========+******+++++++++++++++****************+++++++=============================-:::::-++=====================================--=--=--=+++***************++-:::::::::::::::::::::::::::::::::::...........:::::::::...........               .............................::::::::::::::::.....................................................................................................................................................................:::::::..................................................................................................................................................................................................                                .............................................::---================================================================================================================================------------------------------------------------------------------------------------------------------====++====----------------------------------::::::::.........:::::::::.......................................................................:--=+****+=--:....................................................................................................................................................::-=++**#############################################################*******################################################################################**************+++++++========--------:::::::::::::::::::::..........................................................................::::::---==========--:::....:::--==++**************+++++++++++++********#####################***************************************************************#########################################################################################**********************######################################*****************#####################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++======================+*******************************************************************************************++++++++++++++++++++++++++++++++++=====================================++++++=------------:::::::::::::::::::::::::::::--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............
=============================================--======--------::::::::::::-------------------------------------------------------------------=================================================================+++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================------------------:=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=...........-:....:..:.:::::::....::=++++++++++**+++***++***++***+**+:::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================-------------------=----------------------------------------------------------------------------------------------------------+@*-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%######*++++++++++++++++++++++++****#%@@@@%%@%#**********************+**%%@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%#################################***################*++++*##*+++*********++++++++++++**++=========-----------------+****************************=========+*******++++++++++++++++****************+++++++============================-::::-++===================================------=--=++*++***************++-:::::::::::::::::::::::::::::::::::.......... .::::::::..........                ..............................::::::::::::::::....................................................................................................................................................................:::::::..................................................................................................................................................................................................                                .............................................::---================================================================================================================================------------------------------------------------------------------------------------------------------=====+====-----------------------------------::::::::......::::::::::::......................................................................:--=+****+=--:....................................................................................................................................................::-=++**#############################################################*******###########################################################################**************+++++++=======--------:::::::::::::::.......................................................................................:::::::-----===----::::.....:::-==++****************+++++++++++++*******####################***************************************************************##########################################################################################*********************######################################*****************#####################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++======================++*+****************************************************************************************+++++++++++++++++++++++++++++++++=======================================+++++=------------:::::::::::::::::::::::::::::--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............
======================================================--------::::::::------------------------------------------------------------------===================================================================++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================------------------::=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:   .......::..:.::.:.:.......::-=+++*++*++++************++**+**+**+-::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=-------------------------------------------=====================-------------------==---------------------------------------------------------------------------------------------------------*@+=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#####*+++++++++++++++++++++*****%@@@@%%%%%**++++***************++++++*#%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%##################################**################*++++*##*+++**********+++++++++++**++=========-----------------+****************************=========+*******++++++++++++++++*****************+++++++============================:::-++===================================--==-----=+**+++**************+*+-:::::::::::::::::::::::::::::::::::............:::::::::.........                .................................:::::::::::::::...................................................................................................................................................................::::::..................................................................................................................................................................................................                                .............................................::---================================================================================================================================------------------------------------------------------------------------------------------------------==========------------------------------------::::::::...:::::::::::::::...:::::.............................................................:--=+****+=--:....................................................................................................................................................::-=++**#############################################################******########################################################################**************++++++======-------:::::::::::.....................................................................................................:::::::-------:::::......:::-==++*****************++++++++++++++*******##################****************************************************************#########################################################################################********************#######################################*****************#####################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++=======================+******************************************************************************************+++++++++++++++++++++++++++++++++=======================================+++++=------------:::::::::::::::::::::::::::::----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............
======================================================----------:::---------------------------------------------------------------------==============================================+++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================-----------------:::-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.   ......::.............:::-=++++**++++++++*************++****+**+-:::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==-------------------------------------------=====================-------------------==---------------------------------------------------------------------------------------------------------#@==%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@#*#####*+++++++++++++++*+++*****#%@@@@%%%%#**+*++++**********+++*+++++***###%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%#################################**################*++++*##*++++*********+++++++++++**++==========----------------=****************************+=======+*********+++++++++++++++*****************++++++++=====================----==::-++==================================-==-----==+**++*++**************+*+-::::::::::::::::::::::::::::::::::::.......... :::::::::.........                ....................................:::::::::::::..................................................................................................................................................................::::::..................................................................................................................................................................................................                                .............................................::---================================================================================================================================-------------------------------------------------------------------------------------------------------========--------------------------------------::::::::::::::::::::::::::::::::::............................................................:--=+****+=--:....................................................................................................................................................::-=++***#############################################################****##################################################################****************+++++++=====-------:::::::::::............................................................................................................::::::::::::::::.......:::-==++******************++++++===++++++*******################****************************************************************########################################################################################********************#########################################****************#####################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++=++========================+*************************************++++++++********************************************++++++++++++++++++++++++++++++++========================================+++++=------------:::::::::::::::::::::::::::::-----------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............
======================================================------------------------------------------------------------------------------==============================================+++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++**************++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================----------------::::-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=     .....::....::::::-==+++++++++++++*+++++*++********+**+**++*+=-::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====------------------------------------------=====================--------------------=--------------------------------------------------------------------------------------------------------=%%=+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**++++++++++++++++*****#%@@@@@%%%%#*****++++++++**++++++++++***########%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%#################################**################*++++*##*++++***#*****+++++++++++***+==========----------------=****************************+=======+*********+++++++++++++++******************++++++++====================-:--=-:-=+====================================-----==++*++**+++****************+-::::::::::::::::::::::::::::::::::::.......... .::::::::........                 .....................................::::::::::::::................................................................................................................................................................::::::..................................................................................................................................................................................................                                .............................................::---================================================================================================================================-------------------------------------------------------------------------------------------------------========----------------------------------------:::::::::::::::::::::::::::::::::...........................................................:--=+****+=--:....................................................................................................................................................::-=++***###############################################################################################################################***************+++++++======-------::::::::::.....................................................................................................................:::::::::::........:::-==++*******************+++++======++++********###############************************************************************###########################################################################################********************#########################################****************#####################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++============================++****************************************************************************************+++++++++++++++++++++++++++++++==========================================++++=------------:::::::::::::::::::::::::::::-------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............
======================================================--------------------------------------------------------------------------================================================++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++++****************++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================---------------:::::=+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++:      .. .......:=++++++++++++++++++++++++++++++********++**++*+=::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====------------------------------------------=====================-----------------------------------------------------------------------------------------------------------------------------+%#-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*####*++++++++++++++++***##%@@@@%%%%%****++++++++++++++++++++++**##########%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%#################################**################*++++**##++++***#******++++++++++***+==========----------------=****************************+======+**********++++++++++++++++*******************++++++=====================--==--=+===================================---==-=+**++*+++++*****************+=::::::::::::::::::::::::::::::::::::............::::::-::.......                  ......................................:::::::::::::................................................................................................................................................................:::::..................................................................................................................................................................................................                                .............................................::---================================================================================================================================-------------------------------------------------------------------------------------------------------========----------------------------------------::::::::::::::::::::::::::::::::::..........................................................:--=+****+==-::...................................................................................................................................................::-=++***###########################################################################################################################***************++++++=====--------:::::::::................................................................................................................................:::...........:::--=++********************++++=======+++++**********###########****************************######*********************################################################################################################*******************##########################################****************#####################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++=============================+****************************************************++**********************************+++++++++++++++++++++++++++++++===========================================+++-------------:::::::::::::::::::::::::::::---------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............
=======================================================-----------------------------------------------------------------------================================================++++++++*********************++++++*********************++++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================---------------:::..:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=        ........-++++++++++++++++++++++*+++++++*++*****+*++*++++=:::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====-----------------------------------------====================------------------------------------------------------------------------------------------------------------------------------*@*-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*####*++++++++++++++****#%@@@@@%%%%%****++*+++++++++++**+++++**#########%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%##################################*################*++++**##++++***#*******+++++++++***++=========-----------------+****************************+====+******+++**++++++++++++++*+********************++++++========================--====================================------=+*++++++++*+*****************+=::::::::::::::::::::::::::::::::::::............:::::::::......                   .......................................:::::::::::::...............................................................................................................................................................:::::..................................................................................................................................................................................................                                .............................................::---================================================================================================================================-------------------------------------------------------------------------------------------------------========-----------------------------------------:::::::::::::---:::::::::::::::::..........................................................:--=+****++=-::...................................................................................................................................................::-=++***#####################################################################################################################***************+++++++======------:::::::::.....................................................................................................................................................::--=+++*******************++++=========+++++***********########*************************##########****************####################################################################################################******************###########################################****************#####################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++============================+==+***********************************************+++++++++++****************************+++++++++++++++++++++++++++++++===============================================-------------:::::::::::::::::::::::::::::---------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........
=======================================================---------------------------------------------------------------------==================================================+++++****************************************************+++++++++++++++++++++****++++++++++++**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================---------------::::..-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=          .....=++++++++++++++++++++++++++++++++++****++++*++*+=::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======-----------------------------------------====================------------------------------------------------------------------------------------------------------------------------------#@+=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*+++++++++++++**#%%@@@@@%%%%#*******++++++++++++**+++**######%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%##################################**################+++++**#*++++**##******++++++++++**++===========---------------+****************************+====+******+++**+++++++++++++**+******************+**++++++======================--====================================-----=+**+++++++++++***************+*+=:::::::::::::::::::::::::::::::::::::............::::::::......                   .........................................::::::::::::...............................................................................................................................................................::::..................................................................................................................................................................................................                                .............................................::---=============================-==================================================================================================-------------------------------------------------------------------------------------------------------========------------------------------------------::::::::::------:::::::::::::::::.........................................................:--=+****++=-::...................................................................................................................................................::-=++***################################################################################################################***************++++++++======------:::::::::.........................................................................................................................................................::--=+++*******************++++===========++++++**********#######***********************##############################################################################################################################******************#############################################***************#####################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=++++++++++=++++================================+******************************************++++++++++++++++***************************++++++++++++++++++++++++++++++================================================-------------::::::::::::::::::::::::::::-----------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........
=======================================================--------------------------------------------------------------------==================================================+++++**************************************************************+++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================--------------:::....=++++++++++++++++++++++++++++++++++++++++++++++++++++++++=             :+++++++++++++++++++++++++++++++++++*++*+*++*++**=:::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====-----------------------------------------=====================------------------------------------------------------------------------------------------------------------------------------#@+=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*++++++++++****#%@@@@@@%%%%#***********++++*+++*++++*#######%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%####################################################+++++**#*++++***#*******+++++++++**++===========---------------=****************************+===+******++++***++++++++++**++*********************++*+++++====================--====================================-----=+***++++++++++****************+*++-::::::::::::::::::::::::::::::::::::. ..........:::::::::.....                   ..........................................::::::::::::..............................................................................................................................................................:::.......................................................................................................................................................................................................   .                        .............................................::---============================--==================================================================================================------------------------------------------------------------------------------------------------------=========-------------------------------------------:::::::---------::::::::::::::::.........................................................:--=+*****+=-::...................................................................................................................................................::-==+**############################################################################################################***************++++++++======------::::::::::.............................................................................................................................................................::--==+++******************++++=============+++++***********##*********************###################################################################################################################################******************#############################################***************####################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=++++++++++++++=================================++**+**+**+*************+++++++++++****+++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++===============================================+=-------------::::::::::::::::::::::::::::--------------------------------------------------------------:::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........
=======================================================-----------------------------------------------------------------=====================================================++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================--------------:::....:+++++++++++++++++++++++++++++++++++++++++++++++++++++++++           .-+++++++++++++++++++++++++++++++++++++*++*+**++*+=::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====-----------------------------------------=====================-----------------------------------------------------------------------------------------------------------------------------=%%==%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*###*+++++++++***#%%@@@@@@%%%%#***********++++++***++**#######%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%####################################################+++++**#*++++***##*******++++++++**++===========---------------=****************************+===+******+++++**+++++++++**+++***++++*****************++++++==================-=====================================----=++**++++++++++++******************++-::::::::::::::::::::::::::::::::::::............:::::::::.....                   ............................................::::::::::::.............................................................................................................................................................::.......................................................................................................................................................................................................   .                        .............................................::---===========================----=================================================================================================------------------------------------------------------------------------------------------------------=========-------------------------------------------::::::----------:::::::::::::::::.......................................................::-==+*****+=--::..................................................................................................................................................::-==+***#####################################################################################################****************++++++++======-------::::::::::.................................................................................................................................................................:::--=++++++++++***********++++===============++++++********###********************##################################################################################################################################*******************#############################################***************####################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++==================================++**+***************+++++++++++++++++++++++++++++++++++++++++++++++******+***+++++++++++++++++++++++++++++++++++++===============================================+=-------------::::::::::::::::::::::::::::---------------------------------------------------------------::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........
========================================================--------------------------------------------------------------=======================================================+++**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================-------------:::.....-++++++++++++++++++++++++++++++++++++++++++++++++++++++++          .=+++++++++++++++++++++++++++++++++++++*++*++**+**-:::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===------------------------------------------=====================-----------------------------------------------------------------------------------------------------------------------------+@#-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%######*+++++++***#%%@@@@@@%%%%#*************+++**++++*###**###%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%###################################################+++++*##*++++***###*******++++++****+===========----------------+***************************+==+******++++++***+++++++**+++***+++++++**+**************+++++========================================================--=+*****+++++++++++******************++-::::::::::::::::::::::::::::::::::::.............::::::::.....                    ............................................::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................                             ...........................................:::---===========================----=================================================================================================------------------------------------------------------------------------------------------------------=========----------------------------------------------:------------:::::::::::::::::.......................................................::-==+*****++=-::..................................................................................................................................................::-==+***##############################################################################################******************++++++++======-------:::::::::.......................................................................................................................................................................:::--===+++++++++++++++++++++++=================+++++********####**************######################################################################################################################################**********+********#############################################***************####################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++===================================++**+**+*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================+==-------------::::::::::::::::::::::::::::----------------------------------------------------------------:::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........
========================================================------------------------------------------------------------=========================================================+++************************####******************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================------------:::......=++++++++++++++++++++++++++++++++++++++++++++++++++++++-         :+++++++++++++++++++++++++++++++++++++++++*+**++*+-::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===------------------------------------------=====================-----------------------------------------------------------------------------------------------------------------------------*@*-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*+*+++***##%@@@@@@@%%%%#****************++++++###*+**##%%%%@@@@@@@@@@@@@@@@@@@@@%%####%@@@@@%%%###%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%###################################################*++++*##*+++++**###********+++++****++===========---------------+************************+++==+*******+++++++**+++++****++***+++++++++++**+++++*******++++++=====================================================--=+**++***+++++++++++******************++-::::::::::::::::::::::::::::::::::::.............:::::::::....                      ............................................:::::::::::....................................................................................................................................................................................................................................................................................................................................................................                              ..........................................:::---===========================----=================================================================================================----------------------------------------------------------------------------------------------------======+====-----------------------------------------------------------::::::::::--::::::......................................................::-=++******+=--:..................................................................................................................................................::-==+***########################################################################################******************++++++++========------::::::::::............................................................................................................................................................................:::--=======+++++++++++++++++====================+++++******####***************####################################################################################################################################**********+++*******#############################################***************###################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++=====================================++**+***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================+=--------------:::::::::::::::::::::::::::------------------------------------------------------------------::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........
=========================================================------------------------------------------------------==============================================================+++********************##########****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================-----------:::... . .++++++++++++++++++++++++++++++++++++++++++++++++++++++         =+++++++++++++++++++++++++++++++++++++++*+****+**+-:::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===-------------------------------------------=====================-----------------------------------------------------------------------------------------------------------------------------#@*-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*++****#%%@@@@@@@%%%%##*************+++++***##*+***#%%%%%@@@@@@@@@@@@@@@@@%%%%###****#@@@@%%%####%##%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%###################################################*++++*###+++++**####********++++****++===========---------------=************************++==+*******++++++++***+++***++++**++++++++++++++=====+********++++=======================================================+*++=+***+++++++++++****************+**+-:::::::::::::::::::::::::::::::::::::........... :::::::::...                       .............................................:::::::::::..................................................................................................................................................................................................................................................................................................................................................................                               ..........................................:::---===========================----=================================================================================================---------------------------------------------------------------------------------------------------=======+====-----------------------------------------------------------::::::::::--::::::......................................................::-=++**##**+==-::.................................................................................................................................................::-==+***##################################################################################******************+++++++++=======-------:::::::::::................................................................................................................................................................................::::----==============++++========-----============++++*******##****************##################################################################################################################################**********++++*******#############################################****************##################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++======================================++*++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================+=--------------:::::::::::::::::::::::::::-------------------------------------------------------------------:::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........
==========================================================---------------------------------------------------===============================================================++++********************##############************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================-----------:::.... . :+*++++++++++++++++++++++++++++++++++++++++++++++++++-       .+++++++++++++++++++++++++++++++++++++++++**++**+*+:::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====------------------------------------------=====================-----------------------------------------------------------------------------------------------------------------------------%@+-*%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%####******#%@@@@@@@@%%%%##*******************#%%%#####%%%%%@@@@@@@@@@@@@@@@@@@%####******%@@@%%#######***+**#%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%###################################################*++++*###++++++**#####***************+===========----------------************************++++********+++++++++***+***+++****+++++++++++++=======+********++++====================================================+**+=:=+***+++++++++++****************+**+=:::::::::::::::::::::::::::::::::::::........... .:::::::-...                        ..............................................::::::::::................................................................................................................................................................................................................................................................................................................................................................                                 .........................................::----==========================-----=================================================================================================--------------------------------------------------------------------------------------------------======++++===-----------------------------------------------------------::::::::::--::::::......................................................::-=++**##***+=-::.................................................................................................................................................::-==+***##########################################################################********************++++++++++======--------::::::::::.......................................................................................................................................................................................::::--------------============------------==========+++************************###############################################################################################################################************+++++*******#############################################****************##################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++=======================================+*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================+=--------------:::::::::::::---::::::::::-------------------------------------------------------------------------::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........
===========================================================---------------------------------------------====================================================================++++********************#################*******####################******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================----------:::....    -+++++++++++++++++++++++++++++++++++++++++++++++++++       -+++++++++++++++++++++++++++++++++++++++++*****+**=::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====------------------------------------------=====================----------------------------------------------------------------------------------------------------------------------------=%%+-#%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****#%@@@@@@@@%%%%##****************+**#%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@%##*****++%@@@@%%###*++++==+++=+#%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%######################%###################################################*+++++###*+++++**######**************+===========----------------+***************************************+++++******+++****+++++++++++++=========+********+++===================================================+**+-::=++**++++++++++*******************++=:::::::::::::::::::::::::::::::::::::. ...........:::::::::..                         ...............................................:::::::::...............................................................................................................................................................................................................................................................................................................................................................                                 .........................................::----==========================-----=================================================================================================------------------------------------------------------------------------------------------------======++++++====----------------------------------------------------------::::::::::---:::::......................................................::-=+**####**+=--::...............................................................................................................................................:::-=++***#####################################################################*****************++++++++++========--------:::::::::::.............................................................................................................................................................................................:::::::::::----------------------------------=======+++************************##########################################################################################################################***************++++++*******##############################################***************#################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++========================================+********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================--------------::::::::::::------::::::::--------------------------------------------------------------------------:---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........
=============================================================-----------------------------------------======================================================================++++*****************###################################################**************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================----------:::...     .=++*++++++++++++++++++++++++++++++++++++++++++++++=      -+++++++++++++++++++++++++++++++++++++++++*******+-:::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===-------------------------------------------=====================----------------------------------------------------------------------------------------------------------------------------=%%=-#%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***#%@@@@@@@@%%%%#*********************##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****++#@@@@%%####*++++++==+++++#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%###################################################*+++++*##*+++++**#######*************+===========----------------+********************************************************++++++++++++++=========+*********++==================================================+*+=::::=++***++++++++*******************+++=:::::::::::::::::::::::::::::::::::::: .. . ..... :::::::::..                          ................................................::::::::..............................................................................................................................................................................................................................................................................................................................................................                                 .........................................::----==========================-----=================================================================================================-----------------------------------------------------------------------------------------------======+++++++====----------------------------------------------------------:::::::::----:::::......................................................::-=+**####**+==-::...............................................................................................................................................:::-=++***################################################################****************++++++++++========---------::::::::::::...................................................................................................................................................................................................:::::::::::::::::-----------::-----------------====+++***********************#####################################################################################################################********************++++++********#############################################***************#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++========================================++*++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================--------------:::::::::::--------:::::::------------------------------------------------------------------------:-:----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........
===-==========================================================--------------------------------------=======================================================================+++++********#############################################################****************#####################************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================---------:::....     .+++++++++++++++++++++++++++++++++++++++++++++++++=     -+++++++++++++++++++++++++++++++++++++*++**+*****+-::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======-----------------------------------------======================---------------------------------------------------------------------------------------------------------------------------+%#=-#%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%###**#@@@@@@@@@%%%%##*******************######%%%%%%%@@@@@@@@@@@@@%%%%%%%%@@@@%***++*@@@@%#######*+++++++++++++*@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%##################################################*+++++**#*+++++**#######*************+===========----------------=+**********************************+*******************+++++++++++++++==========**********++===============================================++*+-::::-==+***++++++++********************+++:::::::::::::::::::::::::::::::::::::: .. .........::::::::.                            ................................................::::::::.............................................................................................................................................................................................................................................................................................................................................................                                  ........................................::----==========================-----=================================================================================================----------------------------------------------------------------------------------------------=====++++++++++===----------------------------------------------------------:::::::::-----::::......................................................::-=+**####***+=-::..............................................................................................................................................:::--=++***#########################################################*****************++++++++++========---------:::::::::::::............................................................................................................................................................................................................:::::::::::::::::::::::::::::::::------------===++***********************#########################################################################################################*******************************+++++++********#############################################***************#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=+=+=++++++=========================================++*+*++*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================-=-------------::::::::::----------::::::--------------------------------------------------------------------------::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........
==================================================++==========--------------------------------=============================================================================++++*********###############################################################************###########################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================---------:::...       :++++++++++++++++++++++++++++++++++++++++++++++++=.   :+++++++++++++++++++++++++++++++++++++++**+******=:..:::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======-----------------------------------------======================---------------------------------------------------------------------------------------------------------------------------*@*--#%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*###%@@@@@@@@@%%%###******************###***######%@@@@@@@@@@@@@%%%%%%%%%%@@@@#*+++%@@@%%########*+=+++++++++++%@@@%@%%%%%%%%%%%%%%%%%%%%%%%%#####################%%##################################################*+++++**#*++++++**######*************++==========----------------=++********************************++++++++++*****+****++++++++++++++++===========+*********++=============================================+**=:::::====+***+++++++********************++++-:::::::::::::::::::::::::::::::::::::.............:::::::::                            ..................................................::::::............................................................................................................................................................................................................................................................................................................................................................                                    .......................................::----==========================-----================================================================================================-----------------------------------------------------------------------------------------------====+++++++++++====---------------------------------------------------------:::::::::-----::::......................................................::-=+**####***+=-::.............................................................................................................................................:::--==+***####################################################********************++++++=========--------::::::::::::::..........................................................................................................................................................................................................................:::::::::::::::::::::::::::::::-------===++***********************####################################################################################################**********************************++++++++********#############################################***************#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++=++===========================================++*+***++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================-------------:::::::::------------:::::--------------------------------------------------------------------------::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........
==================================================+++===========-------=========------------===============================================================================++++******###################################################################********################################******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================--------::::...        -++++++++++++++++++++++++++++++++++++++++++++++++=. :++++++++++++++++++++++++++++++++++++++++++*+***+-...:.:::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========---------------------------------------=======================---------------------------------------------------------------------------------------------------------------------------#@*-=#%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**#@@@@@@@@@%%#####**************+*###****######%@@@@@@@@@@@@@%%%%%%%%%%%%@@@%**+#@@@@%####*+++**++++++++++++=*@@@%@@%%%%%%%%%%%%%%%%%%%%%%%#####################%%##################################################*+++++**##++++++**#######*************+==========----------------=+++*****************************#*++++++++++****++***+++++++++++++++++===========+++********+============================================+*+-:::::-+====+**+++++++***+****************++++-:::::::::::::::::::::::::::::::::::::. ...........:::::::::.                            ....................................................:::............................................................................................................................................................................................................................................................................................................................................................                                    .......................................::---===========================------===============================================================================================----------------------------------------------------------------------------------------------====+++++++++++++===---------------------------------------------------------:::::::::-----::::......................................................::-=+**#####**+=--::...........................................................................................................................................:::--==++***###########################################**********************+++++++++=====---------:::::::::::::............................................................................................................................................................................................................................................::::::::::::::::::::::::::---==++************************###############################################################################################*************************************+++++++++********#############################################***************#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=+++++=+=============================================+++**++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================-------------::::::::-------------::------------------------------------------------------------------------------:--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........
=================================================++++=============================------==================================================================================+++++******#####################################################################****###################################*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================-------:::....        .++++++++++++++++++++++++++++++++++++++++++++++++=+=+++++++++++++++++++++++++++++++++++++++***+****=:...........::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================-------------------------------------========================--------------------------------------------------------------------------------------------------------------------------=%@*-=#%%%%%%%%%%%%%%%%%%%%%#%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%@@@@@@@%%%#######************+*##**+**#####%@@@@@@@@@@%%@%%%%%%%%%%%%%%@@@@#+*@@@@%####**+++++++++++++++++++%@%@%@@%%%%%%%%%%%%%%%%%%%%%%#####################%%##################################################*+++++*#*#++++++**#######*************+===========---------------=++++****************************#*+++++++++**********+++++++++++++++++===========+==+********+==========================================+*=:::::::-=====+**+++++++*********************+++-::::::::::::::::::::::::::::::::::::::  ...........::::::::.                            ..................................................................................................................................................................................................................................................................................................................................................................................................................                                        ....................................::---==========================-------===============================================================================================---------------------------------------------------------------------------------------------====+++++++++++++++===--------------------------------------------------------:::::::::-----::::......................................................::-=+**#####**+=--::.........................................................................................................................................::::--==++****###################################********************+++++++++++++++++====-----::::::::::::::...............................................................................................................................................................................................................................................................::::::::::::::---==++************************########################################################################################*****************************************+++++++++++********##############################################**************#################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=+++=+================================================++*++**+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================-------------:::::::----------------------------------------------------------------------------------------------:---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......
=================================================++++===============================----==================================================================================++++*******#############################################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================-------:::....         :++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+-................:::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================-------------------=======================================--------------------------------------------------------------------------------------------------------------------------=%%+-=#%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%#########***********+*##*+***#####%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@%*@@@@%%#####**++++++++++++++++++*@%%%%@@@%%%%%%%%%%%%%%%%%%%%%#####################%##################################################*+++++*#*#+++++++*#######*************++==========----------------+++++******************************+++++++*+++******++++++++++++++++++===========+===+*******++=======================================+*+=::::::::-=====+**++++++**********************+++-::::::::::::::::::::::::::::::::::::::.............:::::::::                            ..................................................................................................................................................................................................................................................................................................................................................................................................................                                           .................................::---==========================-------===============================================================================================---------------------------------------------------------------------------------------------====+++++++++++++++===--------------------------------------------------------:::::::::-----::::......................................................::-=+**#####**+==-::.......................................................................................................................................::::---==++*****##########################***********************+++++++++++========+++===---::::::::::::..........................................................................................................................................................................................................................................................................::::::::::---=++****************************##############################################################****##********************************************************++++++++++++********##############################################**************#################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=+=+===================================================++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================-------------::::::----------------------------------------------------------------------------------------------:-=----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......
================================++++++==========++++++====================================================================================================================++++******###############################################################################################################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================-------:::....         .++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+-.....................::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===============================-------=============================================--------------------------------------------------------------------------------------------------------------------------=%%+=+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%############************##*+**#####%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%#%###**+++++++++++++++++++%@%%%%@@@%%%%%%%%%%%%%%%%%%%%#####################%###################################################+++++*#*#*++++++**######*************++===========---------------=++++****************************#*++++++**+++*****+++++++++++++++++++===============+********+======================================+*+-:::::::::-+=====+**++++***********************+++=::::::::::::::::::::::::::::::::::::::. ...........:::::::::.                            .................................................................................................................................................................................................................................................................................................................................................................................................................                                            ................................::---==========================-------===============================================================================================---------------------------------------------------------------------------------------------===++++++++++++++++====-------------------------------------------------------::::.::::-----::::......................................................:--=+**#####**++=-::......................................................................................................................................:::---==+++******######################*********************++++++++++========----=========--::::::.......................................................................................................................................................................................................................................................................................:::::--==+******************************************************************************************************************************************************++++++++++++++********#*############################################**************#################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==+===================================================++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================-----------------------------------------------------------------------------------------------------------------:-=------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....
=============================++++++++++=========++++++====================================================================================================================++++*****################################################################################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================-------:::....          -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+=:   . ..................:::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================================================================================--------------------------------------------------------------------------------------------------------------------------+%#=-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################***********##*****####%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@%%##**+++++++++++++++++++#@%%%%%%@@@%%%%%%%%%%%%%%%%%%%####################%###################################################++++++#*#*++++++**######**************+===========---------------=+++++*******************+++++*******++***++++****++++++++++++++++++++=========-=====++*******+=====================================+*=::::::::::::=+====+**+***********************+**+++=::::::::::::::::::::::::::::::::::::::. ............::::::::.                             ................................................................................................................................................................................................................................................................................................................................................................................................................                                             ...............................::---==========================------================================================================================================---------------------------------------------------------------------------------------------===+++++++++++++++++===------------------------------------------------------::::..::::-----::::......................................................:--=+**#####**++=-::....................................................................................................................................::::--===+++***********#########*******************+++++++++++++=========-------------==++===--::::...........................................................................................................................................................................................................................................................................................::::--=++*****************************************************************************************************************************************************+++++++++++++++*********############################################**************#################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==+====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================------------------------------------------------------------------------------------------------------------------:-=------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
============================+++++++++++========+++++++===================================================================================================================+++++****##################################################################################################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================-------:::....          .+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=:      .  .  ..............::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================================================================================--------------------------------------------------------------------------------------------------------------------------*@#=-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**********##***######%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##%%@@@@@@@@@@@%#****++++++++++++++++=+=*@@%%%%%%@@%%%%%%%%%%%%%%%%%%%####################%###################################################++++++#*#*+++++++*######**************+===========---------------=+++++******************+++++++*****+****+++++*****+++++++++++++++++++===============++******++====================================++-:::::::::::::+=====+**+**********************+++*+++=::::::::::::::::::::::::::::::::::::::: . ..........:::::::::                              ...............................................................................................................................................................................................................................................................................................................................................................................................................                                             ...............................::---==========================------================================================================================================---------------------------------------------------------------------------------------------===+++++++++++++++++===------------------------------------------------------::::..::::------:::......................................................:--=+**#####**++=-::...................................................................................................................................:::---==++++***************#####*************++++++++++++==========----------::::::::--==+++==--:::.............................................................................................................................................................................................................................................................................................:::--=++*********************++******************************************************************************************************************************+++++++++++++++*********############################################**************#################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==++====================================================++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================-------------------------------------------------------------------------------------------------------------------:-=-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=========================+++++++++++++++=======++++++++==================================================================================================================++++*****##################################################################################################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================-=-----:::....           =++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=.                 ...........:::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=------------------------=========================================================================================-------------------------------------------------------------------------------------------------------------------------#@#=-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*#########*********###*######%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%###%%@@@@@@@@@%#*****+++++++++++++++++++=+%@%%%%%%%@@@%%%%%%%%%%%%%%%%%####################%%##################################################*+++++***#+++++++*######**************+============---------------++++++*****************+++++++*********+++++******+++++++++++++++++++===============+++*****++===================================++-:::::::::::::-======+**++*********************++*+++++::::::::::::::::::::::::::::::::::::::: . ..........:::::::::                               ..............................................................................................................................................................................................................................................................................................................................................................................................................                                                ............................::---==========================------================================================================================================--------------------------------------------------------------------------------------------===++++++++++++++++++====-----------------------------------------------------::::..::::-----::::......................................................:--=+**#####***+=-::.................................................................................................................................::::--===++++*****************####***********++++++===========----------::::::::::::::::-==++++==-:::..............................................................................................................................................................................................................................................................................................:::-=++******************++++++++++*************************************************************************************************************************+++++++++++++++********#############################################**************#################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++==+====================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================--------------------------------------------------------------------------------------------------------------------=---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
========================++++++++++++++++=======++++++++==================================================================================================================++++*****##################################################################################################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================-------:::....           :+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*++++-.                    ..........:::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==--------=========================================================================================================------------------------------------------------------------------------------------------------------------------------=#@*=-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############********##*###%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%#%%%#####%%@@@@@@@%##******+++++++++++++++++=+++%@@%%%%%%%@@%%%%%%%%%%%%%%%%%####################%%##################################################*+++++*#*#+++++++*######**************++===========---------------+++++++***************++++++++********+++++*******+++++++++++++++++++===============+++****+++=================================+++=-:::::::::::::-=======**++**********************+*+++++:::::::::::::::::::::::::::::::::::::::. .......... .::::::::.                              ..............................................................................................................................................................................................................................................................................................................................................................................................................                                                ............................::---==========================------================================================================================================--------------------------------------------------------------------------------------------===+++++++++++++++++++===-----------------------------------------------------::::..::::-----::::......................................................:--=+**######**+=-::................................................................................................................................:::---===++++*********+++++*****##*********++++=======------------::::::::::::::......:::--=++++==-:::..............................................................................................................................................................................................................................................................................................:::-==+******************++++==++++++********************************************************************************************************************++++++++++++++++++********#############################################**************#################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==+=+===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================-------------------------------------------------------------------------------------------------------------------=------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
======================+++++++++++++++++++=====++++++++++=================================================================================================================++++*****###################################################################################################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================-------::.....           .+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++-.                         ........:::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===============================================================----------============================================------------------------------------------------------------------------------------------------------------------------=%@*==*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*******###**##%%%@@@@@@@@@@@@@%%%%%%%%%%%%%###%%######%%@@@@@@@%#******++++++++++++++++++=+++#@@%%%%%%%%@@%%%%%%%@%%%%%%%%%####################%##################################################*+++++*#*#+++++++**######**************+===========---------------=++++++***************++++++++********+++***+++****++++++++++++++++++===============++++***+++================================+++==+-::::::::::::========+**++***********************+++++-::::::::::::::::::::::::::::::::::::::. .......... .:::::::::                                ............................................................................................................................................................................................................................................................................................................................................................................................................                                                ...........................:::---==========================------================================================================================================--------------------------------------------------------------------------------------------===+++++++++++++++++++===-----------------------------------------------------::::..::::-----::::......................................................:--=+**######**+=-::...............................................................................................................................:::---===++++++++++++++++++++***********++++++===--------:::::::::::::::::..............::--=+++++=-:::...............................................................................................................................................................................................................................................................................................::--=+*****************+++========++++++*************************************************************************************************************+++++++++++++++++++++********##############################################*************#################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=++=+====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================-------------------------------------------------------------------------------------------------------------------=------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=====================+++++++++++++++++++++====++++++++++=================================================================================================================++++*****##################################################################################################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================-------::....            :+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=:                             ........:::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------==--==============================================================-----------------========================================------------------------------------------------------------------------------------------------------------------------=%@*=-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############******###****##%%%@@@@@@@@@@@@%%%%%%%%%%%%###%%#######%%@@@@@@@%##*****++++++++++++++++++++++*@@%%%%%#%%%%%%%%%%%%%%%%%%%%%####################%##################################################*+++++*#*#*+++++++*######**************+============--------------=+++++++****###******+++++++++********++****+++****++++++++++++++++++===============+++++**+++===============================+++===+=-::::::::::-==+=====+**++************************++++-::::::::::::::::::::::::::::::::::::::: ............:::::::::                                 ...........................................................................................................................................................................................................................................................................................................................................................................................................                                                ...........................:::---==========================------================================================================================================--------------------------------------------------------------------------------------------===+++++++++++++++++++===-----------------------------------------------------::::..::::-----::::.....................................................::--=+**######**+=-:::.............................................................................................................................::::--====++++++++===========++*********++++++==----::::::::::::::::.....................::-==+++++=-:::...............................................................................................................................................................................................................................................................................................::--=++****************++===-----====+++++*********************************************************************************************************+++++++++++++++++++++++********##############################################**************################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++==+=====================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================-------------------------------------------------------------------------------------------------------------------=------------------:::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
===================++++++++++++++++++++++++++++++++++++++================================================================================================================++++*****##################################################################################################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================-------::...     ..:-=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-.                                ........::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------=========-============================================================================-----------------------============================-=====------------------------------------------------------------------------------------------------------------------------+%%*=-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*########*****###***####%%@@@@@@@@@@@@%%%%%%%%%%%%###%########%%@@@@@@@%##******+++++++++++++++++=+++++%@%%%%%#%%%%%@%%%@%%@%%%%%%%%####################%##################################################*+++++*#*#*+++++++*######**************++===========--------------=++++++++****##******+++++++++********+***++++++****+++++++++++++++++===============+++==+*+++==============================+++=======-:::::::::=========+**++*************************+++-:::::::::::::::::::::::::::::::::::::::  .......... .::::::::.                                   ........................................................................................................................................................................................................................................................................................................................................................................................................                                                ...........................:::---==========================------================================================================================================--------------------------------------------------------------------------------------------====++++++++++++++++++====----------------------------------------------------::::..::::-----::::.....................................................::--=+**######**+=--::.............................................................................................................................:::--================-------==++********+++++===--::::::::::.............................::-==+++++=-::................................................................................................................................................................................................................................................................................................::--=++****************++==---------===+++++*******************************************************************************************************+++++++++++++++++++++++********##############################################**************################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===+======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================-------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=================++++++++++++++++++++++++++++++++++++++++================================================================================================================++++*****#####################################################################################################*****#######*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================-------:::..::-=++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=:                                   .........:::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------========================================================================================---------------------------======================---=====------------------------------------------------------------------------------------------------------------------------+%%+=-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***####**##%%%%@@@@@@@@%%@@@%%%%%%%%%%##%%%%########%%@@@@@@@#*******++++++++++++++++++++++++*@@%%%%%#%%%%%%%%%%%@%%%%%%%%####################%##################################################*++++++**#*+++++++*######***************+============--------------+++++++++**####****++++++++++************++++++****+++++++++++++++++===============+++==++*++=========================================-:::::::-==+=======+*++*************************+++-:::::::::::::::::::::::::::::::::::::::.  ...........:::::::::                                   .......................................................................................................................................................................................................................................................................................................................................................................................................                                                 ...........................:::---==========================------================================================================================================--------------------------------------------------------------------------------------------====+++++++++++++++++++===----------------------------------------------------::::..::::-----::::.....................................................::--=+**######**+=--::.............................................................................................................................:::--========-----------::---=++********++++===--::::....................................::-==+++++=-::................................................................................................................................................................................................................................................................................................:::-=++***#************++==--:::::----===++++******************************************************************************************************+++++++++++++++++++++++********##############################################**************################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================--------------------------------------------------------------------------------------------------------------------=------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
==============++++++++++++++++++++++++++++++++++++++++++++===============================================================================================================++++*****###################################################################################################**********###*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================-------==++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:                                      .........:::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------========================================================================================----------------------------====================-----====------------------------------------------------------------------------------------------------------------------------+%%+--*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**###%%%@@@@@@@@%#%@@%%%%%%%%%###%%%%#########%@@@@@@@%********+++++++++++++++++++++++++%@%%%%%#%%%%%%%%%%%%@%%%%%%%####################%%#################################################*++++++*##*+++++++***####***************+=============-------------++++++++++***##****++++++++++************+++++++****++++++++++++++++===============+++===+*++==============================+===========-::::::===========+*****************************++-:::::::::::::::::::::::::::::::::::::::.   ..........:::::::::                                    ......................................................................................................................................................................................................................................................................................................................................................................................................                                                 ...........................:::---==========================------================================================================================================--------------------------------------------------------------------------------------------====+++++++++++++++++++===----------------------------------------------------::::...:::-----::::.....................................................::-==+**######**+==-::.............................................................................................................................:::----=--------::::::::::::-==+********++++===--:::.....................................::-==++++==-::................................................................................................................................................................................................................................................................................................:::-=++***##***********++=--:::::::::---==++++*****************************************************************************************************++++++++++++++++++++++++*******##############################################**************################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================--------------------------------------------------------------------------------------------------------------------=-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
============++++++++++++++++++++++++++++++++++++++++++++++===============================================================================================================++++*****###################################################################################################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================----=++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=:                                        ..........:::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------==========================================================================================----------------------------===================-----====------------------------------------------------------------------------------------------------------------------------*%%=-=*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%###########%##*###%%%@@@@@@@@%**@@@%%%%%%%%####%%@@%#######%@@@@@@@@#********+++++++++++++++++++++++++#@@%%%%##%%%%%%%%%%%%%%%%%%%%###################%%#################################################*++++++*#**++++++++**##*#***************+=============-------------=+++++++++++******++++++++++*************+++++++****++++++++**++++++===============+++=-==+++===========================================-::::=+==========+******+************************-::::::::::::::::::::::::::::::::::::::::   ...........::::::::                                      ....................................................................................................................................................................................................................................................................................................................................................................................................                                                 ...........................:::---==========================------================================================================================================--------------------------------------------------------------------------------------------====+++++++++++++++++++===----------------------------------------------------::::...:::-----::::.....................................................::-==+**######**++=-::.............................................................................................................................::::-------:::::::::::::::::--=+********++++===--:::.....................................::-==++++==-::.................................................................................................................................................................................................................................................................................................::-==+***##***********++=--::::::::::---==+++*****************************************************************************************************++++++++++++++++++++++++*******##############################################**************################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=+=========================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================--------------------------------------------------------------------------------------------------------------------=--------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
==========++++++++++++++++++++++++++++++++++++++++++++++++===============================================================================================================++++*****###################################################################################################********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================---=+************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-.                                         .............:::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------===========================================================================================----------------------------==================-------==------------------------------------------------------------------------------------------------------------------------*%%=--*%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%#########%######%%@@@@@@@@@@#**%@@%%%%%%#####%%@@@%#######%@@@@@@@%#**##****+++++++++++++++++++++++++*@@%%%%#%%%%%%%%%%%%%%%%%%%%%###################%%#################################################*++++++*##*++++++++*####*#***************+============-------------=+++++++++++++++++++++++++++*************++++++++****++++++***++++++================++==--=++============================================--===============+****************************+*=::::::::::::::::::::::::::::::::::::::::  . . . ......:::::::::                                     ....................................................................................................................................................................................................................................................................................................................................................................................................                                                   .........................:::--==========================-------================================================================================================---------------------------------------------------------------------------------------------===+++++++++++++++++++====---------------------------------------------------:::....:::-----::::.....................................................::-==+**######**++=-::..............................................................................................................................:::::::::::::::..........::--=+********+++====--::......................................::-==++++=--::.................................................................................................................................................................................................................................................................................................::-==+****##**********++=--::::...:::::--==+++*****************************************************************************************************+++++++++++++++++++++++********#############################################**************################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+============================================================+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================================--------------------------------------------------------------------------------------------------------------------=------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
========+++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================++++*****###################################################################################################********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================---=+*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:                                             ..............:::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------=============-===============================================================================-------------------------==================-------==-----------------------------------------------------------------------------------------------------------------------=#%%=--*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%#######%%#*###%%%@@@@@@@@@%***%@%%%%%%######%@@@@%######%@@@@@@@@%######**+++++++++++++++++++++++++=+%@%%%%%#%%%%%%%%%%%%%%%%%%%%####################%#################################################*++++++*###++++++++*####*#***************+============-------------=+++++++++++++++++++++++++++*************++++++++****++++++***++++++================++=====+++==============================================+========++===+******************************=::::::::::::::::::::::::::::::::::::::::. . . . ......:::::::::                                     ....................................................................................................................................................................................................................................................................................................................................................................................................                                                   .........................::---==========================------=================================================================================================---------------------------------------------------------------------------------------------===+++++++++++++++++++====---------------------------------------------------:::....::::----::::.....................................................::-==+**######**++=-::...............................................................................................................................:::::::::::.............::--=+********++++===--:::.....................................::-==++++=--::.................................................................................................................................................................................................................................................................................................::--=+****##**********++=--:::......:::--==++++****************************************************************************************************+++**++++++++++++++++++********#############################################**************################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=+==========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================================--------------------------------------------------------------------------------------------------------------------=--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
======+++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================++++*****###################################################################################################*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================+*******+*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-                                               ................:::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------=========-----------------===================================================================------------------------==================-------=------------------------------------------------------------------------------------------------------------------------=#@%=--*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*###*##%%###############%@@@@@@@@@@%#***%@%%%%%##%###%%@@@@%######@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++#@@%%%%%%%%%%##%%%%%%%%%%%%%%###################%#################################################*++++++*###*+++++++*####*#**+************+============--------------+++++++++++++++++++++++++++*************+++++++++****+++++**++++++++===============++==++++++============================================+===============+******************************=::::::::::::::::::::::::::::::::::::::::.     . ..... .::::::::                                     ....................................................................................................................................................................................................................................................................................................................................................................................................                                                    ........................::---==========================------=================================================================================================---------------------------------------------------------------------------------------------===++++++++++++++++++++===---------------------------------------------------:::....::::----::::.....................................................::-==+**######**++=-::.................................................................................................................................:::::.................::--=+********++++===--:::.....................................::-==++++=--::.................................................................................................................................................................................................................................................................................................::--=++****#**********++=--:::.......:::--==+++*********************************************************************************************************++++++++++++++++++********#############################################**************################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************=============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================--------------------------------------------------------------------------------------------------------------------=-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
====+++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================+++++*****###################################################################################################******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=                                                  ..................::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------=====---------------------------============================================================-----------------------==================--------------------------------------------------------------------------------------------------------------------------------=%@%=--*%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%#######%@@@@@@@@@@@#****%@%%%%%#%%###%%@@@@%#####@@@@@@@@@@@@@@@@@%%#*+++++++++++++++++++++++++*@@%%%%%%%%%%%%%%%%%%%%%%%%%%###################%#################################################*+++++++#*#*++++++++#####***+************+=============-------------=+++++++++++++++++++++++++****#**********+++++++++***++++***++++++++===============+++++++++++==-==================================================+=====+******************************=:::::::::::::::::::::::::::::::::::::::::       ..... .::::::::.                                    ....................................................................................................................................................................................................................................................................................................................................................................................................                                                    ........................::---==========================------=================================================================================================---------------------------------------------------------------------------------------------===++++++++++++++++++++===---------------------------------------------------:::....::::----::::.....................................................::-==+**######**++=-::.......................................................................................................................................................:::-=++***#***++++===--:::....................................:::-=+++++=--::.................................................................................................................................................................................................................................................................................................::--=++****#**********++=--:::........:::-==+++**********************************************************************************************************+++++++++++++++++********#############################################**************################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================-------------------=======------------------------------------------------------------------------------------------=-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
===++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================+++++*****#####################################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================+*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.                                                   .....................::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================================================-------------------===================--------------------------------------------------------------------------------------------------------------------------------+%@%=--*%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*##################%%@@@@%@@@@@@%#****%%%%%%%#%%#####%@@@#####%@@@@@@@@@@@@@@@@@@@@%*+++++++++++++++++++++=+++%@%%%%%%%%%%%%%%%%%%%%%%%%%%###################%##################################################+++++++###*++++++++*####*#*+************+=============-------------=+++++++++++++++++++++++++*###***********+++++++++****+++**+++++++++===============++++++++++=+================================================++==+====++******************************+:::::::::::::::::::::::::::::::::::::::::.        . .  :::::::::                                     ...................................................................................................................................................................................................................................................................................................................................................................................................                                                     .......................::---==========================------=================================================================================================---------------------------------------------------------------------------------------------===++++++++++++++++++++===---------------------------------------------------:::....::::----::::.....................................................::--=+**#######*++=-::.......................................................................................................................................................:::-=++***#****++++===-:::....................................:::-=+++++=-:::.................................................................................................................................................................................................................................................................................................:::-=++***************++=--:::........:::--=+++**********************************************************************************************************+++++++++++++++++********#############################################**************################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================-----------------===========----------------------------------------------------------------------------------------=-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================+++++******######################################################################################################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================+**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-                                                    ........................:::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================================================----------------===================---------------------------------------------------------------------------------------------------------------------------------+%@%=--*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%@@@%%##@@@@@@%*****%%%%%%%%%######%@@@####%@@@@@@@@@@@@@@@@@@@@@@@*++++++++++++++++++++=+++#@@%%%%%%%%%%%%%%%%%%%%%%%%%###################%%#################################################*++++++###*++++++++*####*#***************+============-------------=+++++++++++++++++++++++++*##*******++***++++++++++****+***+++++++++===============+++==+++++=++=-=====================================================++++************************+****+:::::::::::::::::::::::::::::::::::::::::.        .  . .::::::::                                     ...................................................................................................................................................................................................................................................................................................................................................................................................                                                      ......................::---==========================------=================================================================================================---------------------------------------------------------------------------------------------===++++++++++++++++++++===---------------------------------------------------:::....::::---:::::......................................................:--=+**#######*++=-::.......................................................................................................................................................:::-=++**##****++++===-:::....................................:::-=+++++=-::..................................................................................................................................................................................................................................................................................................:::-==+***************++==-:::.........::--=+++**********************************************************************************************************+++++++++++++++++********##############################################*************################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================----------------===============-------------------------------------------------------------------------------------==--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================+++++******#######################################################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================+************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=                                                    .............................::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================================================----------=====================---------------------------------------------------------------------------------------------------------------------------------+%@#=--*%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*####****###*#*##%@@%####%@@@@@%#*****%%%%%%%%########%@%####@@@@@@@@@@@@@@*********#*++++++++++++++++++++++++*@@%%%%%%%%%%#%%#%%%%%%%%%%%%##################%%#################################################*++++++*###++++++++*##*#*#***************+============--------------++++++++++++++++++++++++********++++++*+++++++++++****+**+++++++++++==============++===+++++=++=--===========================================--------=++*++***********************+****+-::::::::::::::::::::::::::::::::::::::::.           . .::::::::.                                    ...................................................................................................................................................................................................................................................................................................................................................................................................                                                      ......................::---==========================------================================================================================================----------------------------------------------------------------------------------------------===++++++++++++++++++++===---------------------------------------------------:::....::::---:::::......................................................::-=++**######**+=-::........................................................................................................................................................::-=++**##****++++===--::....................................:::-=++++==-::..................................................................................................................................................................................................................................................................................................:::--=+***************++==-:::.........::--==++**********************************************************************************************************+++++++++++++++++********##############################################*************################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================--------------==================-------------------------------------------------------------------------------------=---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================+++++******#######################################################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                                                   ... ..............................::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================================================================---------------------------------------------------------------------------------------------------------------------------------+%@#=--*%%%%%%%%%%%%%%%%@%@%#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********####%@@%###*##@@@@@@#*****#%%%%%%%%##############%@@@@@@@@@@@@@@*+++++++++++++++++++++++++++++++++++%@%%%%%%%%%%%%%##%%%%%%%%%%%##################%%#################################################*++++++*###+++++++++##*#*#***************+============--------------=++++++++++++++++++++++++*****+**++++++++++++++++++******+++++++++++=============+++===++=++==++=--==========================================-:::::::++++++*****************************-:::::::::::::::::::::::::::::::::::::::::      .    .  :::::::::                                    ...................................................................................................................................................................................................................................................................................................................................................................................................                                                       .....................::---==========================------================================================================================================----------------------------------------------------------------------------------------------===++++++++++++++++++++===--------------------------------------------------::::.....:::---:::::......................................................::-=++**######**+=-::........................................................................................................................................................::-=++***#****+++++==--::....................................:::-=++++=--::..................................................................................................................................................................................................................................................................................................:::--=+***************++==-:::.........::--==+++********************************************************************************************************++++++++++++++++++*******###############################################*************#################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================-------------==================--------------------------------------------------------------------------------------=----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================+++++******########################################################################################################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================+****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:                                                  ......................................::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===============================================================================---------------------------------------------------------------------------------------------------------------------------------+%@#=--+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**+******##%%@@@%#**#####@@@@@@******#%%%%%%%%##############@@@@@@@@@@@@@@@*+++++++++++++++++++++++++++++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%###################%#################################################*++++++*###*++++++++#*##*##*+************+============---------------+++++++++++======+++==++****************++++++++++**********++++++++============+++==+++=====+*=-==-======================================++++====++++++++++++*************************-:::::::::::::::::::::::::::::::::::::::::        .     .::::::::                                       ................................................................................................................................................................................................................................................................................................................................................................................................                                                      ......................::---==========================------================================================================================================---------------------------------------------------------------------------------------------====++++++++++++++++++++===--------------------------------------------------:::......::::--:::::......................................................::--=+***#####**+=-::........................................................................................................................................................::-=++***#****+++++==--::....................................::--=++++=--::...................................................................................................................................................................................................................................................................................................::--=++**************++==-:::.........:::--=++***********************************************************************************************************++++++++++++++++********##############################################*************#################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===+============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================------------======================-----------------------------------------------------------------------------------=-----------------------------------------------------:::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================+++++******########################################################################################################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=                                                  .............................................:::::::::::::::::::::--------------------------------------------------::::::::------------------------------------------------------------------------------------------------------------------=============================================================================---------------------------------------------------------------------------------------------------------------------------------*%@#=--+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++**#%@@%##**######*%@@@@@#******#%%%%%%%%#############%@@@@@@@@@@@@@@@#*++++++++++++++++++++++++++++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%###################%#################################################*++++++*###*++++++++**##*##*+************+==============-------------=+++++++=========+++++++********************+++++++*****#*****++++++++++=====-=++*+==+++======++=--=========++++++++++++++++++++==========++++++++++++++++++++*************************-:::::::::::::::::::::::::::::::::::::::::.       .     .::::::::.                                      ................................................................................................................................................................................................................................................................................................................................................................................................                                                      ......................::---==========================------================================================================================================--------------------------------------------------------------------------------------------=====++++++++++++++++++++===--------------------------------------------------:::......::::--:::::......................................................:::-=++**#####**+=-::........................................................................................................................................................::-=++***#*****++++==--::....................................::--=++++=--::...................................................................................................................................................................................................................................................................................................:::-=++**************++==--::.........:::--=+++**********************************************************************************************************+++++++++++++++++*******##############################################*************#################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================-----------=======================----------------------------------------------------------------------------------=------------------------------------------------------::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++++++++*******++++++++++++++++++++++++++++++++++++++=============================================================================================================+++++******########################################################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================+******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-                                                 ....................................................:::::::::::::::::::::-----------------------------------------::::::::::::::::::-----------------------------------------------------------------------------------------------------------============================================================================---------------------------------------------------------------------------------------------------------------------------------*%@#=--+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++*******++***#####@@@@@@*******#%%%%%%%##############@@@@@@@@@@@@@@@@%**++++++++++++++++++++++++++++++++=*%%%%%%%%%%%%%%%%#%%%%%%%%%%%##################%#################################################*+++++++###*++++++++***#*****************++============---------------=++============++++++++*********************++++++++**********++++*****++====+***=-=++==-====+*=---=-=====++*****++++++++++================+++++*++++++++++++******************+******-:::::::::::::::::::::::::::::::::::::::::.              :::::::::                                      ................................................................................................................................................................................................................................................................................................................................................................................................                                                      ......................::---==========================-----=================================================================================================---------------------------------------------------------------------------------------==========++++++++++++++++++++===--------------------------------------------------:::......::::-::::::.......................................................::--=++**####**+=-::........................................................................................................................................................::-=++***#*****++++==--::....................................::--=+++==-:::...................................................................................................................................................................................................................................................................................................:::-=++**************+++=--::.........:::--=+++**********************************************************************************************************+++++++++++++++++*******##############################################*************################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=+===============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================----------=========================---------------------------------------------------------------------------------=--------------------------------------------------------::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++++*************++++++++++++++++++++++++++++++++++++=============================================================================================================+++++******########################################################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============+********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=.                                              ............................................................:::::::::::::::::::::----------------------------------:::::::::::::::::::::::-------------------------------------------------------------------------------------------------------==========================================================================----------------------------------------------------------------------------------------------------------------------------------*%@#=--=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++*####*#@@%@@#*******#%%%%%%%#############%@@@@@@@@@@@@@@@@@**++++++++++++++++++++++++++++++++++%@%%%%%%%%%%%#%%#%%%%%%%%%%%##################%%################################################*+++++++###*++++++++****#*****************+============---------------=======+++++++++++++++*********************+++++++++++********+*++*****++++++++*+==+++========++=----=++++++++++++=============================++*+++++++++++*******************+**+**-::::::::::::::::::::::::::::::::::::::::::              .::::::::                                      . ...............................................................................................................................................................................................................................................................................................................................................................................................                                                     ......................::---==========================-----=================================================================================================----------------------------------------------------------------------------=====================++++++++++++++++++++===--------------------------------------------------:::......:::::::::::........................................................::-=++**####**+=--:........................................................................................................................................................::-=++***##****++++==--::....................................::--=+++==-::....................................................................................................................................................................................................................................................................................................:::-==+***************++=--::..........::--==++**********************************************************************************************************+++++++++++++++++*******##############################################*************################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=+================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================-------============================--------------------------------------------------------------------------------=--------------------------------------------------------:::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++++++**************++++++++++++++++++++++++++++++++++++============================================================================================================++++++******########################################################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============+********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+-                                             .................................................................:::::::::::::::::::::::---------------------------:::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------==========================================================================-------------------------------------------------------------------------------------------------==-------------------------------*%@#=--=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++*+++++++++++++++++******%@#%@@********#%%%%%%%############%@@@@@%%%@@@@@@@@@@**+++++++++++++++++++++++++++++++=++#@%%%%%%%%%%%#%%##%%%%%%%%%%##################%%################################################*+++++++*##*+++++++++***#*****************+==============----------====+++++++++++++++++++++++*******************++++++++++++*******++*****+++++++++++===+++=====+===+=-=-=+==========================================+**+++++++++++******************+**+**-::::::::::::::::::::::::::::::::::::::::::.             .::::::::.                                     .  ...............................................................................................................................................................................................................................................................................................................................................................................................                                                     .....................::---==========================-----=================================================================================================--------------------------------------------------------------------------======================+++++++++++++++++++++===--------------------------------------------------:::......:::::::::::........................................................::--=++*####**+=--:........................................................................................................................................................::-==+***##*****+++==--::....................................::--=++==--::....................................................................................................................................................................................................................................................................................................:::-==+***************++=--:::.........:::-==++***********************************************************************************************************++++++++++++++++*******##############################################*************################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************===================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================----===============================-------------------------------------------------------------------------------=------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++*****************+++++++**+++++++++++++++++++++++++============================================================================================================++++++******#######################################################################################################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============+**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+.                                           .........................................................................:::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------============================================================================-------------------------------------------------------------------------------------------------====-----------------------------*%@#=--=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++**#@%*@@#********#%%%%%%#############@@@@@%%%%@@@@@@@@@@#**++++++++++++++++++++++++++++++++=*@@%%%%%%%%%###%%#%%%%%%%%%%##################%%################################################*+++++++*##*+++++++++*********************+=============-------====+++++++====================+++****************++++++++++++++******+***++++++++++++=-==++====--=+==*=--=++===========================================****+*+++++++******************+*****=::::::::::::::::::::::::::::::::::::::::::.              :::-:::::                                     .  ................................................................................................................................................................................................................................................................................................................................................................................................                                                    .....................::---==========================-----=================================================================================================-------------------------------------------------------------------------============++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::..........................................................::-=++**###**+=--::.......................................................................................................................................................::-==+***##*****++++==-::....................................::--==+==--::....................................................................................................................................................................................................................................................................................................:::--=+***************++=--:::.........:::-==++************************************************************************************************************+++++++++++++++*******##############################################*************################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================-----------------------------------------------------------------------------==------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++++***************************+++++++++++++++++++++++++============================================================================================================++++++******###############################################################********###############################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:                                          ...............................................................................::::::::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------=-----------------=============================================================================------------------------------------------------------------------------------------------------=====-----------------------------*%@#=--=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++*%@**@@**********%%%%%%############%@@@@%%%#%@@@@@@@@@@%**+++++++++++++++++++++++++++++++==+%@%%%%%%%%%####%##%%%%%%%%%%##################%#################################################+++++++*###+++++++++*********************+=============--====+++++++++=========================++++++++++++++++++++++++++++++**++***++**++++++++++++=-==++=-==--====++==++++==========================================+***+++++++++******************+***+*=:::::::::::::::::::::::::::::::::::::::::::              :::::::::                                         ...............................................................................................................................................................................................................................................................................................................................................................................................                                                    .....................::---==========================----==================================================================================================-----------------------------------------------------------------------=======+++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::..........................................................::-=++**###**+=--::.......................................................................................................................................................::--=+***##******+++==-:::...................................::--=====-::......................................................................................................................................................................................................................................................................................................::--=++****#*********++=--:::.........:::--=+++***********************************************************************************************************+++++++++++++++*******##############################################*************################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+====================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================================================================----------------------------------------------------------------------------==--------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++++****************************++++++++++++++++++++++++============================================================================================================++++++*****###############################################################************##################*****####*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=                                         .....................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------===========-------===============================================================================------------------------------------------------------------------------------------------------=====-----------------------------*@@#=--=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++#@#*#@%**********%%%%%%###########%@@@@@%%##%@@@@@@@@@@%**+++++++++++++++++++++++++++++++=++#@@%%%%%%%%%###%##%%%%%%%%%%##################%#################################################+++++++*###+++++++++*********************+================++++++++++============================+++++++++++++++++++++++++++++++++++**+**+++++++++++=-==+++====-===+=++=++*++===========================================+*+*++++++++*****************++***+*=:::::::::::::::::::::::::::::::::::::::::::              .::::::::.                                        ...............................................................................................................................................................................................................................................................................................................................................................................................                                                    .....................::---==========================----==================================================================================================----------------------------------------------------------------------=====++++++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::..........................................................::-==+**###**+=--::.......................................................................................................................................................::--=+***####*****++==-:::...................................::--====--::......................................................................................................................................................................................................................................................................................................::--=++****#*********++==-:::..........::--==++***********************************************************************************************************+++++++++++++++*******##############################################**************################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================================================================----------------------------------------------------------------------------==---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++*****************************++++++++++++++++++++++++============================================================================================================++++++*****###############################################################**************************************##************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+======+****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*=.                                      ............................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------==============================================================================================------------------------------------------------------------------------------------------------=====-----------------------------*@@*=--=#%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++*%%*+%@#*#********%%%%%###########%@@@@@%%%%##@@@@@@@@@@@**++++++++++++++++++++++++++++++++==*@@%%%%%%%%%######%%%%%%%%%%##################%#################################################+++++++*###*++++++++*#*******************++==========+++++++++++++===============================+++++++++++++++++++++++++++++++++++*+**+++++++++++==-=+++====--==+++++++++++===========================================++*+*+***++******************+**+**+:::::::::::::::::::::::::::::::::::::::::::.              :::::::::                                         ..............................................................................................................................................................................................................................................................................................................................................................................................                                                     ...................:::---==========================----==================================================================================================---------------------------------------------------------------------=====+++++++++++++++++++++++++++++++++++++++++++====-------------------------------------------------:::......::::::::::...........................................................:--=+**###**+=--::.......................................................................................................................................................::--=+***###******+++=--::...................................::-=====--::......................................................................................................................................................................................................................................................................................................:::-=++***#*##*******++==-:::..........:::-==++****************************************************************************+++++++++++++******************+++++++++++++++********##############################################************#################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+====================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================---------------------------------------------------------------------------=----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++*******************************++++++++++++++**+++++++============================================================================================================++++++*****##############################################################***************************************##************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**=                                     ....................................................................................................::::::::::::::::::::::::::::::::::::::::::::::.......:::::::::::------------------------------------------------------------=============================================================================================------------------------------------------------------------------------------------------------=====-----------------------------*@@*=--=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++#%%**@@#*#********%@%%%%##########%@@@@@%%%%#%@@@@@@@@@@@#*++++++++++++++++++++++++++++++=++=+%@%%%%%%%%#######%%%%%%%%%%##################%#################################################+++++++*###*+++++++++#*******************++=====++++++++++**+++==================================+++++++++++++++++++++++++++++++++++*+**++++++++++===-=+++===-=--=+++++++++++===========================================+*+**++++***********************+**+::::::::::::::::::::::::::::::::::::::::::::              :::::::::                                         ..............................................................................................................................................................................................................................................................................................................................................................................................                                                     ...................:::---==========================----==================================================================================================---------------------------------------------------------------------====++++++++++++++++++++++++++++++++++++++++++++====-------------------------------------------------:::......::::::::::...........................................................:--=+**###**+=--::.......................................................................................................................................................::--=+***#####*****++=--::...................................::-=====-:::......................................................................................................................................................................................................................................................................................................:::-=++*****##********+==-:::..........:::--=+++***************************************************************************+++++++++++++******************+++++++++++++++********##############################################************#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************=====================================================================++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================--------------------------------------------------------------------------=-----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++*******************************+++++++++++++****++++++============================================================================================================++++++*****#############################################################***************************************###************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+======+*********************************************+++++++++++++++++++++++++++++++++++++++++++=-:..=++++++++++++++++++++++++++++*+**:                                   ...................................................................................................................:::::::::::::::::::::::::::::...............::::::::-------------------------------------------------------------==--======================================================================================------------------------------------------------------------------------------------------------=====-----------------------------*%@#=--=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#*+++++++++++++*%%#+#@@**##*******#@@%%%#########%@@@@@%%%%%##@@@@@@@@@@@%*+++++++++++++++++++++++++++++++++=+#@@%%%%%%%########%%%%%%%%%##################%%################################################++++++++*##*+++++++++*********************+==++++++++****+++++====================================+++++++++++++++++++++++++++++++++++***+++++++++==--==+++=-=-=--==++++++++++============================================+******+**+********************+**+::::::::::::::::::::::::::::::::::::::::::::              .::::::::                                         ...............................................................................................................................................................................................................................................................................................................................................................................................                                                    ...................:::---==========================----==================================================================================================--------------------------------------------------------------------====+++++++++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::...........................................................:--=+**###**+=--::.......................................................................................................................................................::--=+****####*****++=--::...................................::-====--:::.......................................................................................................................................................................................................................................................................................................::-==+*****##********+==-:::...........::--==++**************************************************************************++++++++++++++******************+++++++++++++++********##############################################************#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=====================================================================+++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================--------------------------------------------------------------------------=------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++*******************************++++++++++++*****++++++============================================================================================================++++++*****#############################################################**************************************####************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++====+************************************************+++++++++++++++++++++++++++++++++++++==:.       =++++++++++++++++++++++++++*****+                                   ..............................................................................................................................::::::::::::::::..................:::::::::::----------------------------------------------------------------===================================================================================------------------------------------------------------------------------------------------------=====-----------------------------*%@#=--=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+*##**++++++++++++*%%*+%@%*+*******++*@@%%%########%@@@@@%%%%%###%@@@@@@@@@@@*+++++++++++++++++++++++++++++++++==*@@%%%%%%%%%########%%%%%%%%#################%%################################################++++++++*##*+++++++++*#*******************+==++++++****+++========================================+++++++++++++++++++++++++++++++++++****+++++++==---=++++===-=--==++++++++++=============================================+*+***++*+*************+++*++*+**+-:::::::::::::::::::::::::::::::::::::::::::.             .::::::::.                                         ..............................................................................................................................................................................................................................................................................................................................................................................................                                                     ..................:::---===========================--===================================================================================================-------------------------------------------------------------------====++++++++++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::...........................................................:--=+**###**+=--::.......................................................................................................................................................:::-=++***####*#****+=--::...................................::-====--::........................................................................................................................................................................................................................................................................................................::--=+*****##********++=--::...........:::--=+++*************************************************************************++++++++++++++******************+++++++++++++++********##############################################************#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+======================================================================+++++++++++++++++++++++++++++++++++++++++++++++=============================================================================================================================-------------------------------------------------------------------------=--------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++*******************************++++++++++++*****++++++============================================================================================================++++++*****##############################################################*************************************#####***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+===++***************************************************+++++++++++++++++++++++++++++++=-..           .++++++++++++++++++++++++++*+*+**.                                  ..................................................................................................................................................................:::::::::::::::::::---------------------------------------------------------================================================================================------------------------------------------------------------------------------------------------=====-----------------------------*%@#=---#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++*+++++++++++++#%#**%@#+++++++++==+%@%%%########%@@@@%%%%%%#**#@@@@@@@@@@@#*++++++++++++++++++++++++++++++++==+%@%%%%%%%%%%#######%%%%%%%%%################%%################################################++++++++*###+++++++++*#*******************+==+++++*+*+++==========================================+++++++++++++++++++++++++++++++++++****++++++==----=+++++-=-=---=++*+++++++==============================================+**+**+*************++++++++****+-:::::::::::::::::::::::::::::::::::::::::::.              :::::::::                                         ..............................................................................................................................................................................................................................................................................................................................................................................................                                                     ..................:::---===========================--===================================================================================================-------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::...........................................................:--=+**###**+==-::.......................................................................................................................................................:::-=++****#*##*****+==-::..................................::--====--::........................................................................................................................................................................................................................................................................................................::--=+*****##********++=--::............::--==+++************************************************************************+++++++++++++++++***************+++++++++++++++*********#############################################************#################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=====================================================================++++++++++++++++++++++++++++++++++++++++++++++===============================================================================================================================------------------------------------------------------------------------=---------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++********************************++++++++++******++++++==========================================================================================================++++++++*****###############################################################************************************#####***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++*******************************************************+++++++++++++++++++++++++++:                 -++=+++++*+++++++++++++++*****+*=                                .....................................................................................................................................................................:::::::::::::::::::::::::::----------------------------------==--------------==============================================================================------------------------------------------------------------------------------------------------=====-----------------------------*%@#=---#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++*%#*+*@@*+++++++=====*@@%%%######%@@@@@%%%%%%#***%@@@@@@@@@@%*+++++++++++++++++++++++++++++++++=+#@@%%%%%%%%%######%%%%%%%%%%%################%################################################++++++++*###*++++++++*********************+=++++++++++============================================+++++++++++++***+++++++++*++++++++++***+++++=------=+++++-=-=-=-==+++++++++==============================================+**+****+******+++++++++++*+****+-::::::::::::::::::::::::::::::::::::::::::::              :::::::::                                          .............................................................................................................................................................................................................................................................................................................................................................................................                                                     ..................:::--=================================================================================================================================-------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::...........................................................:--=+**###**+==-::.......................................................................................................................................................:::-=++******##*****+==-::..................................::--====--::........................................................................................................................................................................................................................................................................................................::--=++****##********++=--::............:::-==+++***********************************************************************+++++++++++++++++++**************+++++++++++++++*********#############################################************#################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+======================================================================++++++++++++++++++++++++++++++++++++++++++++================================================================================================================================------------------------------------------------------------------------=----------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++*********************************+++++++++*******++++++=========================================================================================================++++++++******################################################################***********************************#####***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************+++++++++++++++++++++-                   .+- .=++++*+++++++++++++******+**.                               .......................................................................................................................................................................:::::::::::::::::::::::::::------------------------------======----------------=========================================================================-------------------------------------------------------------------------------------------------=====-----------------------------*%@#=---*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++*##*+%@%++++++++======%@%%%%####%@@@@@%%%#%%%****#@@@@@@@@@@@#*+++++++++++++++++++++++++++++++++=*@@%%%%%%%%%######%#%%%%%%%%%################%################################################*+++++++*###*+++++++++********************++++++++=+==============================================++++++++***********+++++++++++++++++*+*++===-------=+++++=====-===+++++++++===============================================+******++****++++++++++++*+****+-::::::::::::::::::::::::::::::::::::::::::::.             .::::::::.                                         .............................................................................................................................................................................................................................................................................................................................................................................................                                                     ..................::---=================================================================================================================================------------------------------------------------------------------====+++++++++++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::...........................................................:--=+**###**++=-::.......................................................................................................................................................:::-=++******#*#****+==-::..................................::--====--::........................................................................................................................................................................................................................................................................................................:::-=++****##********++==-:::...........:::--==++***********************************************************************+++++++++++++++++++**************+++++++++++++++*********#############################################************#################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************=======================================================================+++++++++++++++++++++++++++++++++++++++++++================================================================================================================================------------------------------------------------------------------------==----------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++*********************************++++++++********++++++========================================================================================================+++++++++******################################################################**********************************######***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+**************************************************************+++++++++++++++++++:                     --   =++++++++++**+********+****-                              .............................................................................................................................................................................::::::::::::::::::::::::---------------------------=======--------------------====================================================================--------------------------------------------------------------------------------------------------=====-----------------------------*%@#=---*%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**++++++++++++++++++++++*#*+*%@#++++++++======*@@%%%%###%@@@@@%%##%#%*+***@@@@@@@@@@@#*+++++++++++++++++++++++++++++++=+++%@%%%%%%%%%########%%%%%%%%%################%################################################*+++++++*###*+++++++++*********************+++++=+================================================++++**************++++++++++++++++++++++=----------=+++++=========++++++++++===============================================+***+**+***+++++++++++++*+****+-::::::::::::::::::::::::::::::::::::::::::::.              :::::::::                                          ............................................................................................................................................................................................................................................................................................................................................................................................                                                     ..................::---=================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::...........................................................:--=+**###**++=-::........................................................................................................................................................::-=++********#****++=-:::.................................::--====--::........................................................................................................................................................................................................................................................................................................:::-=++****##********++==-:::...........:::--==++**********************************************************************++++++++++++++++++++**************+++++++++++++++*********#############################################************#################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+======================================================================++++++++++++++++++++++++++++++++++++++++++=================================================================================================================================------------------------------------------------------------------------==----------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++*********************************++++++++********++++++======================================================================================================+++++++++++******#################################################################********************************#######**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+=+==***************************************************************+++*+**++++++++*+-.                      .=    =++++*+**+****************+                            ......................................................................................................................................................................................:::::::::::::::::::---------:::::::::-------========--------------------===================================================================--------------------------------------------------------------------------------------------------====------------------------------*%@%=---+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+++++++++++++++++++++++++**++#@%*+++++++++======#@%%%%%#%@@@@@@%######*+***%@@@@@@@@@@%*++++++++++++++++++++++++++++++++==+#@@%%%%%%%%%%######%%%%%%%%%################%################################################*++++++++###*+++++++++*#*******************+++++=================================================++***************+++++++++++++++++*+++++++----------=++++++=====++++++++++++++++=============================================***+***+++++++++++++++++******-:::::::::::::::::::::::::::::::::::::::::::::              :::::::::                                           ..........................................................................................................................................................................................................................................................................................................................................................................................                                                      ..................::---=================================================================================================================================------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++++====--------------------------------------------------:::......::::::::::...........................................................:--=+**###**+==-::........................................................................................................................................................::-=++*************++=--::.................................::--====--::.........................................................................................................................................................................................................................................................................................................::-=++****##********++==-:::............:::-==++***********************************************************************+++++++++++++++++++++***********++++++++++++++++*********#############################################*************################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=======================================================================++++++++++++++++++++++++++++++++++++++++==================================================================================================================================------------------------------------------------------------------------==-------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++*********************************+++++++*********++++++======================================================================================================+++++++++++******#################################################################*******************************########**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*************************************************************+******+++*++*++++:                         ::   .=*+*+**+**+**************+:                           .........................................................................................................................................................................................:::::::::::::::::::::::::::::::::::-------======------------------------===============================================================---------------------------------------------------------------------------------------------------====------------------------------*%@%=---+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%#***++++++++++++++++++++++++++++++++#%#++++++++++======+%@%%%%%@@@@@@%%######*++**#@@@@@@@@@@%#*++++++++++++++++++++++++++++++++==*@@%%%%%%%%%%######%%%%%%%%%################%################################################*++++++++###*+++++++++*#*******************+++++===============================================++++*********++++++++++++++++++++=++++++++++=---------=+++++++++++++++++++++++++++++===========================================+**+++*+++++++++++++++++******-:::::::::::::::::::::::::::::::::::::::::::::              .::::::::.                                          ..........................................................................................................................................................................................................................................................................................................................................................................................                                                      ..................::---=================================================================================================================================------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++++====--------------------------------------------------:::......::::::::::...........................................................:--=+**###**+==-::........................................................................................................................................................::-==+**************+=--::.................................::--====--::.........................................................................................................................................................................................................................................................................................................::-==+**************++==--:::........:::::--==++***********************************************************************++++++++++++++++++++++**********++++++++++++++++*********##############################################************################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=======================================================================+++++++++++++++++++++++++++++++++++++++=====================================================================================================================================---==----------------------------------------------------------------==--------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++***********************************++++++*********++++++=====================================================================================================++++++++++++******###############################################*******############******************************########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++***********************************************************+*****+++**+*++++++-.                          .-    .+**+*********************=                          ................................................................................................................................................................................................::::::::::::::::::::::::::::::-------=-==----------------------------============================================================---------------------------------------------------------------------------------------------------====------------------------------+%@%=---=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%##*++++++++++++++++++++++++++++++++++++*##*+++++++++++======*@@%%%%@@@@@%%##**###*++***%@@@@@@@@@@%*+++++++++++++++++++++++++++++++++=+%@%%%%%%%%%%######%%%%%%%%%################%%###############################################*++++++++*###+++++++++*#*******************+++++=+===========================================+++++*******++++++++++++++++++++++=-=+++++++++=---------==++++++++++++++++++++++++++++============================================+****++++++++++++++++++++****=:::::::::::::::::::::::::::::::::::::::::::::.             .::::::::.                                          ..........................................................................................................................................................................................................................................................................................................................................................................................                                                      ..................::---=================================================================================================================================-----------------------------------------------------------------====+++++++++++++++++++++++++++++++++++++++++++++++===---------------------------------------------------:::......::::::::::...........................................................::-=+**###**+=--::........................................................................................................................................................::-==++********#****+=--::.................................::--====--::.........................................................................................................................................................................................................................................................................................................::--=+**************+++=--::::::::::::::::--==++***********************************************************************+++++++++++++++++++++++*********++++++++++++++++*********##############################################***********#################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+========================================================================+++++++++++++++++++++++++++++++++++++============================================================================================================================================---------------------------------------------------------------==----------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++***********************************++++++*********++++++===============================================================================================++++++++++++++++++******############################################***********############*****************************########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************++*++*++-.                             .-    :++****+******************.                       .........................................................................................................................................................................................................:::::::::::::::::::::::::---------------------------------------=========================================================----------------------------------------------------------------------------------------------------====------------------------------+%@%=---=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*##%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++*##++++++++++++=======#@%%%@@@@@@%###**###*+++**#@@@@@@@@@@%#*++++++++++++++++++++++++++++++++++#@@%%%%%%%%%%#####%%%%%%%%%%###############%%###############################################*++++++++*###*++++++++*#********************++++++========================================+++++++++***++++++++++++++++++++++++++=+++++++++++----------=+++++++++++++++++++++++++++++===========================================+++*++++++++++++++++++++++**+=:::::::::::::::::::::::::::::::::::::::::::::.              :::::::::                                           .........................................................................................................................................................................................................................................................................................................................................................................................                                                      ..................::---=================================================================================================================================-----------------------------------------------------------------====+++++++++++++++++++++++++++++++++++++++++++++++===---------------------------------------------------:::......::::::::::...........................................................::-=+***##**+=--::........................................................................................................................................................::--=++*************+=--::.................................::--====-:::.........................................................................................................................................................................................................................................................................................................::--=++**************++=--::::::::::::::---==+++***********************************************************************+++++++++++++++++++++++*********++++++++++++++++********###############################################***********#################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+========================================================================++++++++++++++++++++++++++++++++++++======================================================================+=======================================================================-----=---------------------------------------------------------=------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::
+++************************************++++++*********++++++====================================================================================+++++++++++++++++++++++++++++******############################################***********##############***************************########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*****************************************************************+*+*+**++=.                                ::    :+*++********************-                       ............................................................................................................................................................................................................:::::::::::::::::::::::----------------------------------------=======================================================----------------------------------------------------------------------------------------------------====------------------------------+%@%=---=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*##%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++*#*+++++++++++++======+@@@@@@@@@%###****##*++++**%@@@@@@@@@%%*+++++++++++++++++++++++++++++++++=*@@%%%%%%%%%%######%%%%%%%%%###############%%###############################################*++++++++*###*+++++++++*********************++++++=======================================++++++++++++++++++++++++++++++++++++++++*++++++++++=--------===++++++++++++++++++++++++++++++===========================+++++++========+**+++++++++++++++++++++++++=::::::::::::::::::::::::::::::::::::::::::::::              :::::::::                                             .......................................................................................................................................................................................................................................................................................................................................................................................                                                      ..................::---=================================================================================================================================-----------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++++====---------------------------------------------------:::......::::::::::...........................................................::-=+***##**+=--::........................................................................................................................................................::--=++*************+=--::.................................::--====-::..........................................................................................................................................................................................................................................................................................................::--=++****#*#*******++==---::::::::------===+++***********************************************************************++++++++++++++++++++++**********++++++++++++++++********###############################################***********#################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+========================================================================++++++++++++++++++++++++++++++++++======================================================================+++=======================================================================----=---------------------------------------------------------=---------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::
+**************************************++++++*********++++++=================================================================================++++++++++++++++++++++++++++++++******#############################################********################***************************#########*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++**********************************************************************++-.                                   :.    -**+*+******************+                       ....................................................................................................................................................................................................................::::::::::::::::---------------------------------------=======================================================----------------------------------------------------------------------------------------------------====------------------------------=%@@=---=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%@@%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**#%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++##++++++++++++++======+%@@@@@@@@%###*****#*++++**#@@@@@@@@@@%#+++++++++++++++++++++++++++++++++=+%@%%%%%%%%%%######%%%%%%%%%###############%%###############################################*++++++++*###*+++++++++*********************+++++++++==================================++++++++++++++++++++++++++++++++++++++++++++++++++++++--------=-=++++++*****++++++++++++++++++++++===-:------=============++++++++++=====++++++++++++++++++++++++++++=::::::::::::::::::::::::::::::::::::::::::::::.             .::::::::.                                             ............... ......................................................................................................................................................................................................................................................................................................................................................................                                                       .................::---=================================================================================================================================-----------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++++===----------------------------------------------------:::......::::::::::...........................................::::............::-=+***##**+=--:.........................................................................................................................................................::--=+++************+=--::.................................::-====--::..........................................................................................................................................................................................................................................................................................................:::-=++****###*******+++==--------------====+++************************************************************************+++++++++++++++++++++***********++++++++++++++++********###############################################************#################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=========================================================================+++++++++++++++++++++++++++++++++=====================================================================+++++========================================================================------------------------------------------------------------=----------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::
***************************************+++++**********++++++================================================================================+++++++++++++++++++++++++++++++++******################################################***###################*************************##########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+***++=++**********************************************************++-:                                       .     -**+*+******************:                    ...........................................................................................................................................................................................................................::::::::::::::-------------------------------------======================================================----------------------------------------------------------------------------------------------------====------------------------------=#@@+----#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*#%@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*######*++++*++++++++++++++++++++++++++++++++++++++++*#*++++++++++++++++====+#@@@@@@@%###***++***+++++**%@@@@@@@@@%#*++++++++++++++++++++++++++++++++++#@@%%%%%%%%%#######%%%%%%%%################%###############################################*+++++++++###*+++++++++*********************+++++++++===============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------====++++++++++++++++++++++++++++++++++++=:::::::::::----=====++++++++++++++++++*++++++++++++++++++++*+++=::::::::::::::::::::::::::::::::::::::::::::::.             .:::::::::                                             ......................................................................................................................................................................................................................................................................................................................................................................................                                                        ................::---=================================================================================================================================-----------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++++====----------------------------------------------------:::......::::::::::..........................................::::::...........::-=++******+=--:.........................................................................................................................................................::--=+++************+=--::................................:::-====--::..........................................................................................................................................................................................................................................................................................................:::-=++******#********++====--============++++*************************************************************************+++++++++++++++*+++*************++++++++++++++++********###############################################************#################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+========================================================================++++++++++++++++++++++++++++++++======================================================================++++++========================================================================-----------------------------------------------------------=------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::
****************************************++++**********++++++===============================================================================++++++++++++++++++++++++++++++++++******########################################################################***********************##########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++=++=========++***************************************************+=:.                                                -**+*******************=                   ..............................................................................................................................................................................................................................:::::::::::::::::--------------------------------=====================================================-----------------------------------------------------------------------------------------------------=====------------------------------#@@+----#%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%**#%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*####*+++++++++++++++++++++++++++++++++++++++++++++*#*++++++++++++++*+====+*@@@@@@@%##***++++**+++++***@@@@@@@@@%%*+++++++++++++++++++++++++++++++=+=*@@%%%%%%%%%%###%##%%%%%%%%%###############%###############################################*+++++++++###*+++++++++*********************++++++++++============================++++===++++++++++++++++++++++++++++++++++++++++++++++++++++=------===+++++++++++++++++++++++++++++++++++++*-:::::::::::::::::--==+++++++++*++*+*+++++++++++++++++++++**+++=:::::::::::::::::::::::::::::::::::::::::::::::              :::::::::                                              .....................................................................................................................................................................................................................................................................................................................................................................................                                                        ................::---=================================================================================================================================-----------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++++====----------------------------------------------------:::......::::::::::..........................................::::::...........::-=++*****++=-::.........................................................................................................................................................:::-=+++++++********+=--::................................:::-====--::...........................................................................................................................................................................................................................................................................................................::-==+******#********+++=============+++++++**************************************************************************+++++++++++++++*****************++++++++++++++++********###############################################************#################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=========================================================================++++++++++++++++++++++++++++++=======================================================================++++++========================================================================-----------------------------------------------------------==-------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::
****************************************++++**********++++++============================================================================+++++++++++++++++++++++++++++++++++++******###########################################################################********************##########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============+*********************************************++=-:.                                                    -+*+******************+.                  ................................................................................................................................................................................................................................::....::::::::::::::::::::::::::::::::::::-----=====================================================----------------------------------------------------------------------------------------------------======------------------------------*@@*----*%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%***%@%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**#*++++++++++++++++++++++++++++++++++++++++++++++##+++++++++++++++**+===+*%@@@@@@##***+++++++++++++**#@@@@@@@@@%#+++++++++++++++++++++++++++++++++++%@@%%%%%%%%##%####%%%%%%%%%###############%%###############################################+++++++++*###+++++++++*#********************++++++++++==========================++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++=-----=-=++++++++++*++*+++++++++++*+++++++++*++*=:::::::::::::::::::::--==++++++++++++++++++++++++++++++*++**+++-::::::::::::::::::::::::::::::::::::::::::::::              .::::::::                                              ... ..........................................................................................................................................................................................................................................................................................................................................................................::.....                                                          ..............::---=================================================================================================================================-----------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++====-----------------------------------------------------:::......:::::::::..........................................:::::::...........::-==+*****++=-::.........................................................................................................................................................:::-=+++++++********+=--::................................:::-====--::...........................................................................................................................................................................................................................................................................................................::-==+****###*********+++++++++++++++++++++*************************************************************************+++++++++++++++++*******************++++++++++++++********###############################################************#################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++++++++++++++++++++++++=======================================================================++++++++=======================================================================-----------------------------------------------------------==----------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::
****************************************++++**********++++++==========================================================================+++++++++++++++++++++++++++++++++++++++******############################################################################*******************##########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================+***************************************++=-:.                                                       . :+********************:                 ...........................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::----====================================================----------------------------------------------------------------------------------------------------======------------------------------*@@#----+%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%***#@%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*+++++++++++++++++++++++++++++++++++++++++++++*#*+++++++++++++++***++=+#%%@@@@%#***++++++++++++++***%@@@@@@@@%%*+++++++++++++++++++++++++++++++++=#@%%%%%%%%%%%%####%%%%%%%%%###############%%###############################################+++++++++*###+++++++++**********************++++++++++===============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----===++++++++++++++++++**+++++*+**+**++++++++:::::::::::::::::::::::::-==++++++*+++**+++++*+++++++++++++++++-::::::::::::::::::::::::::::::::::::::::::::::.             .::::::::.                                             ... ..........................................................................................................................................................................................................................................................................................................................................................................::.....                                                          ..............::---=================================================================================================================================-----------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++====-----------------------------------------------------:::......:::::::::..........................................:::::::............:--=+*****+==-::..........................................................................................................................................................::-=+++++++********+==-::................................:::-====--::...........................................................................................................................................................................................................................................................................................................::--=+*****##**********+++++++++++++++++++***************************************************************************++++++++++++++++*******************++++++++++++++********###############################################************#################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=========================================================================++++++++++++++++++++++++++++=======================================================================+++++++++========================================================================---------------------------------------------------------==----------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::
****************************************+++***********++++++========================================================================+++++++++++++++++++++++++++++++++++++++++******#############################################################################******************##########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================+********************************+++=-:..                                                          . . .-****+**************-                ...................................................................................................................................................................................................................................................::::::::::::::::::::::::::::---========-----======================================-----------------------------------------------------------------------------------------------------======------------------------------*%@%=---=%%@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%****%@%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++##+++++++++++++++++****++##%@@@@#***++++++++++++++++**#@@@@@@@@%%#+++++++++++++++++++++++++++++++++=+@@%%%%%%%%%%%#####%%%%%%%%%##############%%###############################################+++++++++*###*+++++++++*********************++++++++++=============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=---==++++++++++**++++*++++++++***++++***+++++++=::::::::::::::::::::::::::---==+++++++++**+++++++++++++*++++++-:::::::::::::::::::::::::::::::::::::::::::::::              :::::::::                                             .............................................................................................................................................................................................................................................................................................................................................................................:::.....                                                          ..............::---================================================================================================================================------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++===-----------------------------------------------------:::.......:::::::::..........................................::::::::...........::-=+*****+==-::..........................................................................................................................................................::-==++++++********+==-::................................:::-====--::...........................................................................................................................................................................................................................................................................................................::--=++****##***********+++++++++++++++++****************************************************************************+++++++++++++++++*****************+++++++++++++++********###############################################************#################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++++++++++++++++++++++=======================================================================++++++++++++++======================================================================-------------------------------------------------------==-----------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::
****************************************+++***********++++++=======================================================================++++++++++++++++++++++++++++++++++++++++++******#############################################################################******************##########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================++*******************+++++==-:....                                                                    .:+*****************=             .............................................................................................................................................................................................................................................................................:::::----=====-------======================================-----------------------------------------------------------------------------------------------------======------------------------------+%@%=---=%%%@%%%%%%@@%%%%%%%%%%%%%%%%%%%@#****%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++##++++++++++++++++++***#**##%@@@%#**+++++++++++++++++***#@@@@@@@@%#*++++++++++++++++++++++++++++++++=+%@%%%%%%%%%%#%####%%%%%%%%%##############%%###############################################*++++++++*###*+++++++++*********************++++++++++===========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=--==+++++++++++++++*+++++++++*+======+++++++++++-:::::::::::::::::::::::::::----==+++++***++++++++++++++++++++=:::::::::::::::::::::::::::::::::::::::::::::::              :::::::::                                              ............................................................................................................................................................................................................................................................................................................................................................................:::.....                                                          ..............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++====-----------------------------------------------------:::.......:::::::::..........................................::::::::...........::-=+*****+=--:...........................................................................................................................................................::-==++++++********++=-::................................:::-====--::...........................................................................................................................................................................................................................................................................................................:::-=++*****#***********+++++++++++++++++************************************+++++++++++++++************************+++++++++++++++++++****************+++++++++++++++********###############################################************#################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++++++++++++++++++++++=======================================================================+++++++++++++++++++===================================================================------------------------------------------------------=------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::
******************************************************++++++=================================================================++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################******************##########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================++++++++++++===--:....                                                                         .    .=****************+. .      ..................................................................................................................................................................................................................................................................................:::::---===----------=====================================-----------------------------------------------------------------------------------------------------======------------------------------+%@@=----%@%@@%%%%%@@%%%%%%%%%%%%%%%%%%%@#****#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++***####%@@%#**+++++++++++++++++++***%@@@@@@@%%#+++++++++++++++++++++++++++++++++=*@%%%%%%%%%%#%####%%%%%%%%%##############%%###############################################*+++++++++###*+++++++++*********************++++++++++=========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===++++++++++++++*++++**+++++++=--=---===+++++++++::::::::::::::::::::::::::::::---===++++++++++++++++++==+++++=:::::::::::::::::::::::::::::::::::::::::::::::.             .::::::::                                              ..............................................................................................................................................................................................................:.............................................................................................................................................................::::....                                                          ..............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++====-----------------------------------------------------:::.......:::::::::..........................................::::::::...........::-==+***++=-::...........................................................................................................................................................::-==+++++++*******++=-::................................:::-====--::...........................................................................................................................................................................................................................................................................................................:::-=++******************++++++++++++++++++**+*****++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++**************++++++++++++++++********################################################***********#################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++++++++++++++++++++=======================================================================++++++++++++++++++++++=====================================================================-----===------------------------------------------=--------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::
******************************************************++++++================================================================+++++++++++++++++++++++++++++++++++++++++++++++++*******############################################################################******************##########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================---::......            .                                                        .  .  .  .=***************+. .    ......................................................................................................................................................................................................................................................................................:::---------------======================================-----------------------------------------------------------------------------------------------------======------------------------------=%@@+----%@%@@%@%%%@@%%%%%%%%%%%%%%%%%%%%#*****%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##@@%##*+++++++++++++++++++++***%@@@@@@%%#*++++++++++++++++++++++++++++++++=+%@%%%%%%%%%#%#####%%%%%%%%###############%###############################################*+++++++++###*+++++++++***************+*****++++++++++=======================+++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++=+++++++++++++++++**+++++++**=---=-------==+++++*=:::::::::::::::::::::::::::::::----===+++++++++++++++--+++++=::::::::::::::::::::::::::::::::::::::::::::::::             .::::::::.                                              ............................................................................................................................................................................................................::.............................................................................................................................................................::::....                                                          ..............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++===------------------------------------------------------:::.......:::::::::..........................................::::::::............:--=++**+==-::...........................................................................................................................................................::-==+++++++*******++=-:::...............................:::-====--::...........................................................................................................................................................................................................................................................................................................:::-=++*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++++++++++++++++++*************+++++++++++++++++********################################################***********#################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++++++++++++++++++++=======================================================================+++++++++++++++++++++++====================================================================-----===------------------------------------------=----------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::
******************************************************++++++==============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++*******############################################################################******************##########********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================----::........   .                                                                    . ..  :+**************: .    ......................................................................................................................................................................................................................................................................................::::--------------==========-============================----------------------------------------------------------------------------------------------------======-------------------------------#%@*----#@@@@%@@%@@@%%%%%%%%%%%%%%%%%%@%#*****#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#@%##*++++++++++++++++++++++***#@@@@@@%%%*++++++++++++++++++++++++++++++++==#@@%%%%%%%%%%#####%%%%%%%%###############%###############################################*+++++++++*###+++++++++***************+******++++++++++====================+++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++===++++++++++++++++*+----==+++++-==---=-==---==+++++-:::::::::::::::::::::::::::::::::----==+++++++++++++=-=++++=-:::::::::::::::::::::::::::::::::::::::::::::::              :::::::::                                               ...........................................................................................................................................................................................................:::............................................................................................................................................................::::....                                                         ...............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++===------------------------------------------------------:::.......:::::::::..........................................::::::::............::-=+++++=--::...........................................................................................................................................................::--=+++++++*******++=-:::...............................::--====--::...........................................................................................................................................................................................................................................................................................................:::-=++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++*************++++++++++++++++++++++++++++************+++++++++++++++++********################################################***********#################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++++++++++++++++++=======================================================================+++++++++++++++++++++++++======================================================================--===------------------------------------------=-----------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::
*****************************************************+++++++========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#############################################################################*****************##########********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================---::......                                                                           ..  . .+*************: . . .......................................................................................................................................................................................................................................................................................:::::-------------==========-============================----------------------------------------------------------------------------------------------------======-------------------------------#%@#----#@@%@@@@%@@@%%@%%%%%%%%%%%%%%%%@#******%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****%@#***+++++++++++++++++++++++***#@@@@%@%%#*+++++++++++++++++++++++++++++++==*@@%%%%%%%%%###%##%%%%%%%%###############%###############################################*+++++++++*###+++++++++***************+******++++++++++===================+++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++-:-=+++++++++++++++++-::::-=+++++----------==---==++++:::::::::::::::::::::::::::::::::::::---==+++++++++++==++++=-:::::::::::::::::::::::::::::::::::::::::::::::.             :::::::::                                               ...........................................................................................................................................................................................................:::............................................................................................................................................................::::....                                                         ...............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++===------------------------------------------------------:::.......:::::::::..........................................::::::::............::--=+++==-::............................................................................................................................................................::--=+++++++*******++=--::...............................::--====--::............................................................................................................................................................................................................................................................................................................::-==+****************++++++====++++++++++++++++++++++++++++++++++++++++++++++++=========++++++***********++++++++++++++++++++++++++++++************+++++++++++++++++********################################################***********#################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++++++++++++++++++=======================================================================+++++++++++++++++++++++++======================================================================---==------------------------------------------=-----------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::
*****************************************************+++++++====================================================++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++*******################################################**###########################****************##########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================---::........                                                                         .... . .=************- . ..........................................................................................................................................................................................................................................................................................::::::-----------==========--============================---------------------------------------------------------------------------------------------------======-------------------------------*@@%=---+@%%@%@@@@@@%%%%%%%%%%%%%%%%%%%@#*******%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%****++++++++++++++++++++++++***#@@@@@%%#*+++++++++++++++++++++++++++++++==+%@%%%%%%%%%%######%%%%%%%%##############%################################################+++++++++*###*+++++++++**************+******+++++++++++================++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++**=:::=++++++++++++++++=:::::-==+++===-=-=-----------=++*+:::::::::::::::::::::::::::::::::::::::---=+++++++++==++++=-::::::::::::::::::::::::::::::::::::::::::::::::             .::::::::.                                  .          ...........................................................................................................................................................................................................::::............................................................................................................................................................::::....                                                         ...............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++===------------------------------------------------------:::.......:::::::::..........................................::::::::.............::-=====--::............................................................................................................................................................:::-=+++++++********+=--::...............................::--====--::............................................................................................................................................................................................................................................................................................................::-==+****************+++==========++++++=================================================++++*++**++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++********################################################***********#################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===========================================================================++++++++++++++++++++=======================================================================+++++++++++++++++++++++++++==============================================================================--------------------------------------==-----------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::
*****************************************************+++++++================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#############################################################################****************##########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================---::........                                                                         ..... . .-***********=..............................................................................................................................................................................................................................................................................................:::::::---------==========-==============================--------------------------------------------------------------------------------------------------======-------------------------------+%@@=---=%@@%@@@@@@@%%%%%%%%%%%%%%%%%%%@#*******#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%*****++++++++++++++++++++++++****%@@%@%%%#*+++++++++++++++++++++++++++++++==#@%%%%%%%%%%######%%%%%%%%##############%%###############################################+++++++++*###*+++++++++**************+*******+++++++++=======++======+++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++*+-:::=+++++++++*+++++=-::::::-=+++=----=-------------==+*=:::::::::::::::::::::::::::::::::::::::::--==++++++===+++=-::::::::::::::::::::::::::::::::::::::::::::::::             .::::::::.                                             ...........................................................................................................................................................................................................::::............................................................................................................................................................::::....                                                         ...............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++====-----------------------------------------------------:::.......:::::::::..........................................::::::::.............::--===--::.............................................................................................................................................................:::-=+++++++********+=--::...............................::--====--::............................................................................................................................................................................................................................................................................................................::--=+***************+++===------====++======--==================================-----====++++++++*++++++++++++++++++++++++++++++++++++++++*+*****+++++++++++++++++++*******#################################################***********#################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++=+++++++++++++=======================================================================++++++++++++++++++++++++++++=============================================================================--------------------------------------==-----------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::
*****************************************************+++++++============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================---::........                                                                            ... .  :+**********. ............................................................................................................................................................................................................................................................................................::::::::--------==========-=================================--=--------------------------------------------------------------------------------------------=====--------------------------------=%%@+----%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@#********#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%#+++**+++++++++++++++++++++++++***#%@@%%%%#*+++++++++++++++++++++++++++++++==*%@%%%%%%%%%#######%%%%%%%##############%%###############################################*++++++++*###*+++++++++**********************++++++++++===++++++++==+++++++++++++++++++++++++==+++++++++++++++++++++++**+++++++++++++++*+::::=++++++++++++++=--:::::::-=++=--------------------=+*-:::::::::::::::::::::::::::::::::::::::::::-==++++===+++=-::::::::::::::::::::::::::::::::::::::::::::::::.             :::::::::                                              ..........................................................................................................................................................................................................::::............................................................................................................................................................::::....                                                         ...............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++====-----------------------------------------------------:::.......:::::::::..........................................::::::::..............::-----:::.............................................................................................................................................................:::-=+++++++********+=--::...............................::--====--::............................................................................................................................................................................................................................................................................................................::--=+***************+++==--------========---------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++*******#################################################***********#################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================+++++==+++++++++++++======================================================================+++++++++++++++++++++++++++++++============================================================================-------------------------------------==-----------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::
*****************************************************++++++++=========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================---::......... .                                                                        . .... . :+*********..............................................................................................................................................................................................................................................................................................::::::::--------==================================================-----------------------------------------------------------------------------------------=====---------------------------------#%@#----%@@@%@@@@@@%%%%%%%%%%%%%%%%%%%@#*********%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#+++++++++++++++++++++++++++++++++**#%@%%%%%#*+++++++++++++++++++++++++++++++=+%@%%%%%%%%%#######%%%%%%%###############%###############################################*++++++++*###*+++++++++**********************+++++++++++++++++++++++++++++++++++++++++====-----=+++++++++++++++++++++***+++++++++++++++*-:::-+++++++*+++++++==-::::::::-=+=---=--=--------=-----=++:::::::::::::::::::::::::::::::::::::::::::::--=------==-::::::::::::::::::::::::::::::::::::::::::::::::::             :::::::::                                              ..........................................................................................................................................................................................................:::::...........................................................................................................................................................::::....                                                        ................::---================================================================================================================================------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++===-----------------------------------------------------:::.......:::::::::..........................................::::::::..............::::-::::..............................................................................................................................................................:::-==++++++********+=--::...............................::-===+==-:::...........................................................................................................................................................................................................................................................................................................::--=++*****#********++==--:::::---======---:::::::::::::::::-------------------------====+++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++*******##################################################**********##################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++=++++++++++++++======================================================================+++++++++++++++++++++++++++++++============================================================================-------------------------------------==-------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::
*****************************************************++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================---::............                                                                      ....  .... .=********:..............................................................................................................................................................................................................................................................................................:::::::--------===================================================-----------------------------------------------------------------------------------------====---------------------------------*%@%=---#@@@%@@@@@@%%%%%%%%%%%%%%%%%%%@%*********#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+*+++++++++++++++++++++++++++++++***#%@%%%%#*++++++++++++++++++++++++++++++++=#@@%%%%%%%%#######%%%%%%%%##############%###############################################*+++++++++####+++++++++***********************++++++++++++++++****++++++++++++++====--:--------=+++++++++++++++++++++**+++++++++++++++*+::::-+++++++++++==++=--:::::::::-++=-==---------------=--=+=:::::::::::::::::::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::             .::::::::.                                             ..........................................................................................................................................................................................................:::::...........................................................................................................................................................::::....                                                        ................::---================================================================================================================================------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++===-----------------------------------------------------:::.......:::::::::..........................................::::::::...............:::::::................................................................................................................................................................::-==+++++*********+=--::..............................:::-==++==-:::...........................................................................................................................................................................................................................................................................................................::--=++*****#********++==--::::::--======--::::::::::::::::::::::------------------======++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++*******##################################################**********##################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================+++==+++++++++++++======================================================================+++++++++++++++++++++++++++++++++============================================================================------------------------------------==-------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::
*****************************************************++++++++===================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================---::...............                                                              ..  ... ..  ... ..-+******- .............................................................................................................................................................................................................................................................................................:::::::---------==================================================-----------------------------------------------------------------------------------------===----------------------------------+%@@=---+@@%@@@@@@@%%%%%%%%%%%%%%%%%%%@%**********#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++***#%@%%%#**++++++++++++++++++++++++++++++==+%@%%%%%%%%%#######%%%%%%%##############%###############################################*+++++++++####*++++++++***********************+++++++++++*********++++++++++==--------:--------+++++++++++++++++++++***+++++++++++++++*=::::-++++++*++==-=++=--::::::::::-+=---------------=---=--=+=::::::::::::::::::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.             :::::::::                                             ..........................................................................................................................................................................................................:::::...........................................................................................................................................................::::....                                                       ................:::---================================================================================================================================------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++====----------------------------------------------------:::.......:::::::::..........................................::::::::................:::::.................................................................................................................................................................::-==++************+==-::..............................::--=++++=--::...........................................................................................................................................................................................................................................................................................................:::-=++**************++==-::::::::--=====--::::::::::::::::::::::------------===========++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++*******##################################################***********#################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+*++=============================================================================++++++++++++++======================================================================+++++++++++++++++++++++++++++++++==============================================================================----------------------------------==--------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::
*****************************************************+++++++++================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================---::................                                                        ....... ... . ... ..... .:=***+-..............................................................................................................................................................................................................................................................................................::::::----------=======================================++++++++====-----------------------------------------------------------------------------------------==----------------------------------=#@@*----%@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%***********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++****#%%%%%#*+++++++++++++++++++++++++++++++=+%@%%%%%%%%%#######%%%%%%%##############%################################################+++++++++*###*+++++++++**********************++++++++***********++++++===------------:--------+++++++++++++++++++++**+++++++++++++++*+-::::-++++++*+=--==++=--:::::::::::=+=-------------=----=---=+-:::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::             :::::::::                                             ..........................................................................................................................................................................................................:::::...........................................................................................................................................................::::....                                                      .................:::---===============================================================================================================================-------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++=====----------------------------------------------------:::.......:::::::::..........................................:::::::.......................................................................................................................................................................................::-==++************+==-::..............................::--=++++==-::...........................................................................................................................................................................................................................................................................................................:::-==+**************++=--::::::::--=====--::::::::::::::::::::----------============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++*******##################################################***********#################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=============================================================================++++++++++++++=====================================================================+++++++++++++++++++++++++++++++++++=============================================================================-----------------------------------=--------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::
*****************************************************+++++++++=+===========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================---::..................                 ................             ...  .......... ................. .:--:.......................................................................................................................................................................::::....................................................................................................................::::::-----------====================================+++++++++++===-----------------------------------------------------------------------------------------=------------------------------------#@@%----%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#%%%%%#**+++++++++++++++++++++++++++++++=#@%%%%%%%%%#######%%%%%%%%#############%################################################*++++++++*###*+++++++++#**********************++++++*************+*+=----------------::-------++++++++++++++++++++***+++++++++++++++*=:::::-+++++*+=-==-=++=--::::::::::::+=---=----------=-=--=-=-=+:::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::             .::::::::                                             ..........................................................................................................................................................................................................::::............................................................................................................................................................::::....                                                      .................:::---===============================================================================================================================--------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++=====----------------------------------------------------:::.......:::::::::..........................................:::::::.......................................................................................................................................................................................::-==++************+==-::..............................::-==++++==-:::..........................................................................................................................................................................................................................................................................................................:::-==+**************++=--::::.:::--=====--::::::::::::::::---------===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++*******##################################################***********#################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+============================================================================++++++++++++++======================================================================+++++++++++++++++++++++++++++++++++++===========================================================================-----------------------------------=--------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::
*****************************************************++++++++++=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================---::.........................      ............................  ...............................................................................................................................................................................................................:::::::...................................................................................................................::::::------------==================================++++++++++++===------------------------------------------------------------------------------------------------------------------------------*%@@=---#@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#%%%%%#*++++++++++++++++++++++++++++++==+%@%%%%%%%%%####%%#%%%%%%%##############%###############################################*++++++++*###*+++++++++***********************+++*******************+=--------------:::------=++++++++++++++++++++**+++++++++++++++*+-:::::-+++++*=======++==-::::::::::::-+=----=---------------=--=-:::::::::::::::::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.            .::::::::.                                              ........................................................................................................................................................................................................::::............................................................................................................................................................::::....                                                      ..................::---===============================================================================================================================--------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++=====---------------------------------------------------::::.......:::::::::...........................................::::::.......................................................................................................................................................................................::--=++************+==-::..............................::-=++++++=-:::...........................................................................................................................................................................................................................................................................................................::--=+***#*#********++=--::::::::--======--::::::::::---------===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++******##################################################***********#################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================+++++++++++++++=====================================================================+++++++++++++++++++++++++++++++++++++++============================================================================---------------------------------==--------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::
*****************************************************++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================--:::...........................................................................................................................................................................................................................................................................:::::::::..................................................................................................................::::::-------------================================+++++*****++++==------------------------------------------------------------------------------------------------------------------------------=%@@*---*@%@@@@@@@%%%%%%%%%%%%%%%%%%%@%%*************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#%%%%#*++++++++++++++++++++++++++++++==+%@%%%%%%%%%%%###%#%%%%%%%##############%###############################################*++++++++*###*+++++++++***********************+**********************+--------------:::------=+++++++++++++++++++***+++++++++++++++*=::::::-++++++========+==-:::::::::::::=+--------------------------::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::            .::::::::.                                              ........................................................................................................................................................................................................::::............................................................................................................................................................::::....                                                      ..................::---===============================================================================================================================--------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++=======---------------------------------------------------::::.......:::::::::...........................................:::::........................................................................................................................................................................................::--=++************+==-::..............................::-=++**++=-:::...........................................................................................................................................................................................................................................................................................................::--=+***#*#********++=--::::::::-===+===----::---------===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++******##################################################***********#################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================+++++++++++++++====================================================================++++++++++++++++++++++++++++++++++++++++============================================================================---------------------------------==--------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::
*****************************************************+++++++++++======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================--:::..........................................................................................................................................................................................................................................................................:::::::::::.................................................................................................................:::::---------------==============================+++++*******+++===------------------------------------------------------------------------------------------------------------------------------#@@%=--=@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%@#************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#%%%%#*++++++++++++++++++++++++++++++==#@@%%%%%%%%%%###%#%%%%%%%%#############%###############################################*++++++++**##**++++++++***********************************************+----:--------:::------=+++++++++++++++++++**+++++++++++++++*+-::::::-++=++=--======+==-:::::::::::::-+=--=------------------=--=::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::             :::::::::                                              ........................................................................................................................................................................................................::::............................................................................................................................................................::::....                                                      ..................::---===============================================================================================================================--------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++=======----------------------------------------------------::::.......:::::::::...........................................:::::........................................................................................................................................................................................::--=++************+==-::..............................:--=++**++=--::...........................................................................................................................................................................................................................................................................................................::--=+*****#********++==-::::::::-===++===----------==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++*******##################################################***********#################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+========================================================================++++++++++++++++====================================================================+*+++++++++++++++++++++++++++++++++++++++===========================================================================---------------------------------==---------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::
*****************************************************+++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******############################################################################***************###########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================--:::.........................................................................................................................................................................................................................................................................::::::::::::..............................::................................................................................::::::---------------============================++++++********+++===------------------------------------------------------------------------------------------------------------------------------*@@@*---%@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%*************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#%%%#**++++++++++++++++++++++++++++++=+%@%%%%%%%%%####%##%%%%%%%##############################################################*+++++++**###*++++++++************************************************+---:--------:::------=++++++++++++++++++***+++++++++++++++++-::::::-++====-=======+==-::::::::::::::-+=---==----------------=-=-::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.            .::::::::                                              ........................................................................................................................................................................................................::::............................................................................................................................................................::::....                                                      ..................::--================================================================================================================================--------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++========-----------------------------------------------------::::.......:::::::::............................................:::.........................................................................................................................................................................................::--=++************+==-::.............................::--=++**++=--::...........................................................................................................................................................................................................................................................................................................::--=++****##*******++==--::::::--==++++=====-==========++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##################################################************################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+========================================================================+++++++++++++++====================================================================+++++++++++++++++++++++++++++++++++++++++++===========================================================================--------------------------------==---------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********############################################################################***************##########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================--:::.........................................................................................................................................................................................................................................................................::::::::::::............................:::::...............................................................................:::::----------------===========================++++++*********+++===------------------------------------------------------------------------------------------------------------------------------+%@%%=--%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@#*************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#%%##*++++++++++++++++++++++++++++++++%@%%%%%%%%%#######%%%%%%%##############################################################*+++++++**###*++++++++*************************************************=---:-------:::------=++++++++++++++++++**+++++++++++++++++=:::::::-++============+==--::::::::::::::=+=--==----------------=--=-:::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::            .::::::::.                                             .........................................................................................................................................................................................................::.............................................................................................................................................................::::....                                                      ..................::--================================================================================================================================--------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++========------------------------------------------------------::::.......:::::::::.............................................:..........................................................................................................................................................................................:::-=++************+=--::.............................::--=++**++=--::...........................................................................................................................................................................................................................................................................................................::--=++****#********++==--:::::--===++++++=========+++++++++++++++++++++++++++++======================++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++*******###################################################***********################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=======================================================================+++++++++++++++====================================================================+*+++++++++++++++++++++++++++++++++++++++++===========================================================================--------------------------------==----------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********############################################################################**************###########*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================--:::........................................................................................................................................................................................................................................................................::::::::::::::..........................::::::...............................................................................:::::---------------===========================+++++***********+++===------------------------------------------------------------------------------------------------------------------------------=%@%%#=-*@%@@@%%%%%%%%%%%%%%%%%%%%%%@%%@%**************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#%%#**++++++++++++++++++++++++++++++=#@@%%%%%%%%#######%%%%%%%%#############################################################***+++++**###*+++++++++*************************************************=--:-------:::------=++++++++++++++++++*++++++++++++++++++-:::::::=++==========-=+==--:::::::::::::::++=---=------------------==::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::             :::::::::                                              ........................................................................................................................................................................................................::.............................................................................................................................................................::::....                                                      ..................::--================================================================================================================================--------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++=======-------------------------------------------------------::::.......:::::::::........................................................................................................................................................................................................................................:::-==+************+=--::..............................::-=++**++=--::...........................................................................................................................................................................................................................................................................................................:::-=++*************+++=----:----==+++++++++++++++++++++++++++++++++++++=================----------====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###################################################***********################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=======================================================================++++++++++++++====================================================================+*++++++++++++++++++++++++++++++++++++++++++++==========================================================================-------------------------------==-----------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********############################################################################**************###########*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================--:::........................................................................................................................................................................................................................................................................::::::::::::::..........................::::::...................................:::::::::...................................:::::---------------=========================+++++++***********+++==--------------------------------------------------------------------------------------------------------------------------------#@@%%*-+@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****####*++++++++++++++++++++++++++++++=*%@%%%%%%%%##%%####%%%%%%%#############################################################****++++***##*+++++++++*************************************************+=-:-------:::------=++++++++++++++++++++====++++++=++++++-:::::::=++==========-=++=--:::::::::::::::-+==---=------------------=-:::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.            :::::::::                                              ........................................................................................................................................................................................................:..............................................................................................................................................................::::....                                                      .................:::--================================================================================================================================--------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++======---------------------------------------------------------::::.......::::::::..........................................................................................................................................................................................................................................::-==+***********++=--::..............................::-=++**++=--::..................................................................................................................................................................................................::::......................................................................................................::-=++*************+++==------====++++++++++++++++++++++++++++================----------------------===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###################################################***********################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++======================================================================++++++++++++++====================================================================+*+++++++++++++++++++++++++++++++++++++++++++++==========================================================================------------------------------==------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********############################################################################**************#########*#*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================--:::........................................................................................................................................................................................................................................................................::::::::::::::.........................:::::::..................................:::::::::::..................................:::::---------------========================++++++*************+++==--------------------------------------------------------------------------------------------------------------------------------+%@%%%=-%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***************%%%%%%%%%%##%%%%%%%%%%%%%%%%#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####*++++++++++++++++++++++++++++++=+%@%%%%%%%%%#%%#%##%%%%%%%#############################################################****++++***##*+++++++++**************************************************+-::------:::------=++++++++++++++++++++=======+++=++++++-:::::::=++==========-=++=--::::::::::::::::=+==--=--------------=-=--=-:::::::::::::::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::            :::::::::                                              ........................................................................................................................................................................................................:..............................................................................................................................................................::::....                                                      .................::---================================================================================================================================--------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++======----------------------------------------------------------::::.......::::::::..........................................................................................................................................................................................................................................::-==+***********++=-:::..............................::-==++++==-:::.................................................................................................................................................................................................::::::.....................................................................................................::-=++**************++===========+++++++++++++++++++++=================--------------::::::::::::::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###################################################***********#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+======================================================================++++++++++++++===================================================================+*+++++++++++++++++++++++++++++++++++++++++++++++==========================================================================-----------------------------==------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#############################################################################*************###########*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+================---::.......................................................................................................................................................................................................................................................................:::::::::::::::.........................:::::::.................................::::::---:::::................................:::::---------------=======================++++++**************+++==---------------------------------------------------------------------------------------------------------------------------------#@@%@#:%@%%%%%%%%@%%%%%%%%%%%@%%%%%%%%%%***************#%%%%%%%%%%###%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####*+++++++++++++++++++++++++++++++#@%%%%%%%%%####%%##%%%%%%%############################################################****++++***###*++++++++**************************************************+=-:------:::------+++++++++++++++++++==========+++++++*=::::::::=++=-=======--=++==--:::::::::::::::-++=-=-=-------------------=:::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::            .::::::::.                                             .......................................................................................................................................................................................................................................................................................................................................................................::::....                                                        ...............::---================================================================================================================================--------------------------------------------------------------------====++++++++++++++++++++++++++++++++++=====-----------------------------------------------------------:::........::::::::.........................................................................................:................................................................................................................................................::-==+***********++=-:::..............................::--==++==--:::................................................................................................................................................................................................::::::::...................................................................................................:::-==+**************+++=========++++++++++++++=================--------------:::::::::::::::::::::::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###############################################************#################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+======================================================================++++++++++++====================================================================+*+*+++++++++++++++++++++++++++++++++++++++++++++=============================================================================---------------------------=-------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#############################################################################*************##########**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++==========---::.......................................................................................................................................................................................................................................................................:::::::::::::::........................::::::::................................:::::-------::::...............................:::::--------------======================+++++++***************+++==---------------------------------------------------------------------------------------------------------------------------------+@%%%@+%@%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%#***************#%%%%%%%%%%%#*###%%%%%%%%%%##*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###**+++++++++++++++++++++++++++++=*@@%%%%%%%%%#######%%%%%%%############################################################*****+++***###*++++++++**************************************************++=--------::------+++++++++++++++++++===========+++++++=::::::::=++=-========-=++==--::::::::::::::::-++=-=--=-----------------=-::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.           .:::::::::                                             .......................................................................................................................................................................................................................................................................................................................................................................::::....                                                        ...............::---================================================================================================================================--------------------------------------------------------------------====+++++++++++++++++++++++++++++++++======-----------------------------------------------------------:::........::::::::.......................................................................................:::::..............................................................................................................................................::-==+***********++=-:::..............................:::--=====-:::.................................................................................................................................................................................................:::::::::...................................................................................................::-==+**************++++========++++++++===============-------------:::::::::::::::::::::::::::::::::--===+++++++++++++++=========+++++++++++++++++++++++++++++++++++********################################################***********#################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=======================================================================+++++++++++===================================================================++**+++++++++++++++++++++++++++++++++++++++++++++++=============================================================================--------------------------=-------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##############################################################################************##########**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++========---::......................................................................................................................................................................................................................................................................::::::::::::::::........................::::::::...............................::::----===---::::.............................:::::---------------=====================+++++++****************++===----------------------------------------------------------------------------------------------------------------------------------#@@%%@%@%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%@%****************%%%%%%%%%%%%##**######%%%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###*+++++++++++++++++++++++++++++=+%@%%%%%%%%%#######%%%%%%%############################################################*****+++***###*++++++++**************************************************+++=------:::------++++++++++++++++++=============++++++-::::::::=++=-==========++===--::::::::::::::::=+==-=-------------------==-::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::            :::::::::                                             .......................................................................................................................................................................................................................................................................................................................................................................::::....                                                       ................::---================================================================================================================================---------------------------------------------------------------------===++++++++++++++++++++++++++++++++======------------------------------------------------------------:::........::::::::.......................................................................................::::::.............................................................................................................................................::--=+***********++=-::................................::--------::..................................................................................................................................................................................................:::::::::...................................................................................................::--=+**************+++++=====================--------------::::::::::::::::::::::::::::::::....::::::---====+=======================================++++++++++++++++++******################################################***********#################*************************************************************************************************************************************************************************************************############********************************************************************************************************************************************************************************************************************************************************++=======================================================================+++++++++===================================================================+****++++++++++++++++++++++++++++++++++++++++++++++++============================================================================--------------------------=--------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********################################################################################**********#########***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========--:::......................................................................................................................................................................................................................................................................:::::::::::::::.........................:::::::................................::::--=======---:::............................:::::---------------=====================+++++******************++===----------------------------------------------------------------------------------------------------------------------------------+%@%%@%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%@%****************#%%%%%%%%%%%%%##******#%###**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##**++++++++++++++++++++++++++++++#@@%%%%%%%%########%%%%%%############################################################*****+++**+###*++++++++***************************************************++++=---::::-----=++++++++++++++++++==============+++++-::::::::=++============++====-::::::::::::::::-++=-=----------------------::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.           :::::::::                                             .......................................................................................................................................................................................................................................................................................................................................................................::::....                                                      .................::---================================================================================================================================---------------------------------------------------------------------===++++++++++++++++++++++++++++++++=====-------------------------------------------------------------:::........::::::::......................................................................................:::::::.............................................................................................................................................::--=+***********++=-::.................................:::----::::..................................................................................................................................................................................................:::::::::...................................................................................................::--=++************++++++=============--------------::::::::::::::::::::::::......................:::::---==========------------------====================+++++++++++++++******##############################################***********#################**************************************************************************************************************************************************************************************#########################*******************************************************************************************************************************************************************************************************************************************************+=======================================================================+++++++++===================================================================+***+*+++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================-------------------------==-------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#################################################################################*********#########***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======--:::......................................................................................................................................................................................................................................................................:::::::::::::::.........................:::::::...............................::::--===+++===---:::...........................:::::---------------====================+++++******************+++===-----------------------------------------------------------------------------------------------------------------------------------#@@@%%@%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%@%****************#%%%%%%%%%%%%%%##****#####**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++=*@%%%%%%%%%##%#####%%%%%%%############################################################*****++**+####+++++++++**************************************************+++++==-:-::-----=+++++++++++++++++===============++++=-::::::::=++=============+====--::::::::::::::::=++=--=-----------------=-=::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.           .::::::::.                                           ........................................................................................................................................................................................................................................................................................................................................................................::::....                                                      .................::---================================================================================================================================---------------------------------------------------------------------====++++++++++++++++++++++++++++++======-------------------------------------------------------------:::........::::::::.....................................................................................::::::::.............................................................................................................................................::--=+***********++=-::.................................::::::::::...................................................................................................................................................................................................::::::::::..................................................................................................::--=++************+++++======--------------::::::::::::::::::::::::..............................::::::----------------------------------------------=======++++++++++++++****##############################################***********#################*********************************************************************************************************************************************************************************################################*****************************************************************************************************************************************************************************************************************************************************+=======================================================================++=+++++===================================================================+*******++++++++++++++++++++++++++++++++++++++++++++++++============================================================================------------------------==--------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##################################################################################********#########**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======--:::......................................................................................................................................................................................................................................................................:::::::::::::::.........................::::::................................:::---==++++++==---:::..........................:::::---------------===================+++++*******************+++===-----------------------------------------------------------------------------------------------------------------------------------=%@@%@@%%%%%%%%@%%%%%%%%%@%%%%%%%@%%%%@%#****************%%%%%%%%%%%%%%%%#########**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++=*%@%%%%%%%%%#%#####%%%%%%%############################################################*****++**+*###+++++++++***************************************************++++++-:::::----=+++++++++++++++++===============++++=--:::::::=+++============++===--:::::::::::::::::=++=-=-------------------=-::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::           .:::::::::                                           ........................................................................................................................................................................................................................................................................................................................................................................::::....                                                      .................::---================================================================================================================================----------------------------------------------------------------------====+++++++++++++++++++++++++++++=====--------------------------------------------------------------:::........::::::::.....................................................................................:::::::::............................................................................................................................................::--=+***********+==-::...................................:::::::........::::........................................................................................................................................................................................::::::::::..................................................................................................::--=++************++++===-----------::::::::::::::::::::::.........................................::::::-------::::::::::::::::::::::::::::-------------===============+++***##############################################***********#################*******************************************************************************************************************************************************************************###################################*****************************************************************************************************************************************************************************************************************************************************+======================================================================++==+++===================================================================++***+*+**+++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================------------------------==--------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::
******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###################################################################################*******#########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--:::.....................................................................................................................................................................................................................................................................::::::::::::::............................::::.................................:::--===+++++++==---:::.........................:::::---------------==================+++++********************+++==-------------------------------------------------------------------------------------------------------------------------------------+@%@@%%%%%%%%%@%%@%%@%%%@%%%%%%%%%%%%%@%*****************%%%%%%%%%%%%%%%%%######****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++%@%%%%%%%%%%%#####%%%%%%%%###########################################################*****++**+*###*++++++++**#************************************************++++++=-::::----=++++++++++++++++================++++=--:::::::=+++============++===---::::::::::::::::-++=------------------=--==::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.           :::::::::                                           ........................................................................................................................................................................................................................................................................................................................................................................::::....                                                      .................::---================================================================================================================================----------------------------------------------------------------------======++++++++++++++++++++++++++======--------------------------------------------------------------:::........::::::::.....................................................................................:::---:::.............................................................................................................................................::-=++*********++==-::.................................................:::::::......................................................................................................................................................................................::::::::::..................................................................................................:::-=++***********++++==----::::::::::::::::::::.....................................................:::::::::::::::::::::::::::::::::::::::::::::::::::------=====-----==++****#############################################***********#################******************************************************************************************************************************************************************************#####################################****************************************************************************************************************************************************************************************************************************************************++=====================================================================+=========================================================================+******+***+++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================-----------------------==--------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::
******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###################################################################################*******#########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--:::.....................................................................................................................................................................................................................................................................::::::::::::::............................::...................................:::--==++++**+++==---:::........................::::----------------=================+++++*********************++===--------------------------------------------------------------------------------------------------------------------------------------#@%%@%%%%%%%%%%%@%%@%%%%%%%%%%%%%%%#%@%#*****************%%%%%%%%%%%%%%%%%##*#****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++#@%%%%%%%%%%###%###%%%%%%%###########################################################*****+++*+*###*++++++++**#************************************************+++++++=-::-----=+++++++++++=++++================+++==---::::::=+++=========--=++===---:::::::::::::::::=++=------------------=--=-:::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::           :::::::::                                           ........................................................................................................................................................................................................................................................................................................................................................................::::....                                                      .................::---===============================================================================================================================-----------------------------------------------------------------------======++++++++++++++++++++++++++=====---------------------------------------------------------------:::........::::::::....................................................................................:::----:::.............................................................................................................................................::-=++*********++==-::................................................::::::::......................................................................................................................................................................................::::::::::..................................................................................................:::-=++***********+++===--::::::::::::::..............................................................::::::::::::::::::::::::::::.::::::::::::::::::::::::--------------==++***#############################################***********#################*****************************************************************************************************************************************************************************######################################*****************************************************************************************************************************************************************************************************************************************************+=====================================================================+========================================================================+******+****++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================-----------------------==--------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::
******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******####################################################################################******#########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--::::....................................................................................................................................................................................................................................................................:::::::::::::.................................................................:::---==+++*****++==---:::.......................::::---------------=================+++++*********************+++===--------------------------------------------------------------------------------------------------------------------------------------=%%@%%%%%@@%@%%%%%%%%%%%%%%%%%%%%%%#%%@%#****************#%%%%%%%%%%%%%%%%####****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++*%%%%%%%%%%%%######%%%%%%%###########################################################*****+++*+*###*++++++++***#**********************************************++++++++++-::----=++++++++++==++++================+*++=---::::::=+++============+++==----::::::::::::::::-+++=---------------------=-:::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::           .::::::::.                                          ........................................................................................................................................................................................................................................................................................................................................................................::::....                                                    ...................::---===============================================================================================================================------------------------------------------------------------------------======+++++++++++++++++++++++++====----------------------------------------------------------------:::........::::::::....................................................................................::------::.............................................................................................................................................::-=++********++==--::................................................::::-::::.....................................................................................................................................................................................::::::::::..................................................................................................:::-=++*********+++++==--:::::::.:.....................................................................::::::::::.................................::::::::::::------::::--=++***#############################################***********##################****************************************************************************************************************************************************************************######################################******************************************************************************************************************************************************************************************************************************************************=====================================================================+========================================================================+************++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================-----------------------==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::
******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******####################################################################################******#########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--::::....................................................................................................................................................................................................................................................................::::::::::::..................................................................:::---==+++*****+++==---::::....................:::::---------------================+++++**********************+++===---------------------------------------------------------------------------------------------------------------------------------------#%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%@%#*****************#%%%%%%%%%%%%%%%%###***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++#%%%%%%%%%%%######%%%%%%%###########################################################******++*++###*++++++++*************+++******************************+++++++++++++++=-----=++++++++++=++++=================**++=----:::::=+++============+++===---:::::::::::::::::=+++---=--=-----------=--==-::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.          .::::::::.                                         .........................................................................................................................................................................................................................................................................................................................................................................::::....                                                    ...................::---===============================================================================================================================------------------------------------------------------------------------========++++++++++++++++++++++=====----------------------------------------------------------------:::........::::::::....................................................................................::--==--::.............................................................................................................................................::-=++*******+++==-::.................................................:::---:::......................................................................................................................................................................................:::::::::..................................................................................................:::-==+********+++++==--::::..............................................................................::::........................................::::::::::::::::::--=++***#############################################***********#################****************************************************************************************************************************************************************************#######################################******************************************************************************************************************************************************************************************************************************************************+====================================================================+=======================================================================+**************++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================-----------------------==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::
******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******####################################################################################******#########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--::::....................................................................................................................................................................................................................................................................:::::::::::...................................................................:::---==+++******+++==---::::...................:::::---------------===============+++++***********************+++===---------------------------------------------------------------------------------------------------------------------------------------=%%@%%@@%%@%%%%%%%%%%%%%%%%%%%%%%%#%%%@%#******************####%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++*%%%%%%%%%%%######%%%%%%%%##########################################################*********++####+++++++++************+++++**************************++++++++++++++++++==---+++++++++++=++++=================**++-----:::::=+++============++++==----:::::::::::::::::=++=-=-------------------==-::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::           :::::::::                                         .........................................................................................................................................................................................................................................................................................................................................................................::::....                                                    ...................::---===============================================================================================================================-------------------------------------------------------------------------========++++++++++++++++++++======----------------------------------------------------------------:::........::::::::....................................................................................::-====--:.............................................................................................................................................::-==+******++===--::................................................:::-----:::.....................................................................................................................................................................................:::::::::..................................................................................................:::-==+*******++++===--::::..............................................................................................................................::::::::::::::::-==+***#############################################***********#################****************************************************************************************************************************************************************************########################################******************************************************************************************************************************************************************************************************************************************************====================================================================+======================================================================+****************+++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================-----------------------==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################################################################################******#########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--::::...................................................................................................................................................................................................................................................................::::::::::::...................................................................:::---==+++*******+++===--::::..................:::::----------------==============++++***********************++++===----------------------------------------------------------------------------------------------------------------------------------------*%%@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%#%%%%@%#****************+*#%%%%%%%%%%%%%%%@#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*%%%%%%%%%%%#######%%%%%%%###########################################################********++*###*++++++++************+++++++************************++++++++++++++++++++===+*++++++++==+++=================+**+=------::::=+++============++++===---:::::::::::::::::-+++=---=-=---------------==-:::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::           :::::::::                                        ..........................................................................................................................................................................................................................................................................................................................................................................::::....                                                   ....................::---===============================================================================================================================--------------------------------------------------------------------------=========++++++++++++++++++=====-----------------------------------------------------------------:::........::::::::...................................................................................::--====--::............................................................................................................................................::-==+****+++===--::.................................................:::------::.....................................................................................................................................................................................:::::::::..................................................................................................:::--=++*****+++====--::::..................................................................................................................................:::::::::::::-==+***#############################################***********#################****************************************************************************************************************************************************************************########################################******************************************************************************************************************************************************************************************************************************************************+===================================================================+=====================================================================++*******************++++++++++++++++++++++++++++++++++++++++++++++++======================================================================-----------------------=----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################################################################################******########***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--::::...................................................................................................................................................................................................................................................................::::::::::::...................................................................:::---===++*********++===--::::.................:::::----------------=============++++************************+++===------------------------------------------------------------------------------------------------------------------------------------------#%%%%%@%@%%%%%%%%%%%%%%%%%%%%%%%%#%%%@@%#**********+++++*+****##%%%%%%%%%%%%**+***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%######%%%%%%%###########################################################*********+*###*++++++++*#**#*******++++++++**********************+++++++++=====++=+++++==++++++++++=+++==================+**+-------::::=+++============+++++==----:::::::::::::::::=+++-=-=--------------=---==-::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.          .::::::::                                       ..........................................................................................................................................................................................................................................................................................................................................................................:::::....                                                   ....................::---===============================================================================================================================----------------------------------------------------------------------------=========+++++++++++++++======-----------------------------------------------------------------:::........::::::::...................................................................................::-==++==-::............................................................................................................................................::--=++**++===--::::.................................................:::------::.....................................................................................................................................................................................:::::::::...................................................................................................::--=++****+++==----::::.....................................................................................................................................:::::::::::-==+***#############################################***********#################****************************************************************************************************************************************************************************########################################*******************************************************************************************************************************************************************************************************************************************************===================================================================+=====================================================================+***********************++++++++++++++++++++++++++++++++++++++++++++++======================================================================-=--------------------==---------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################################################################################******########***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::...................................................................................................................................................................................................................................................................::::::::::::...................................................................:::---===++*********+++===--::::................::::-----------------============++++*************************+++===------------------------------------------------------------------------------------------------------------------------------------------+*%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#%%%@@%%*******++++++++++**#***#%%%%%%%%%%@%@@@@@@%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%#######%%%%%%###########################################################*********+*###*++++++++*#**********+++++++++*********************+++++++++=======++++++++*+++++++++++++==================+**+--------:::=+++============+++++==----:::::::::::::::::-+++=---=------------------==-::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::          .::::::::.                                     ...........................................................................................................................................................................................................................................................................................................................................................................:::::....                                                   ....................::---===============================================================================================================================-----------------------------------------------------------------------------==========+++++++++++++=====------------------------------------------------------------------:::........::::::::...................................................................................::-==++==-::............................................................................................................................................::--=+++++==---::::..................................................:::--=---::......................................................................................................................................................................................::::::::...................................................................................................:::-==++++++===---:::::...........................................................................................................................................:::::--=++***##############################################**********#################***************************************************************************************************************************************************************************#########################################*******************************************************************************************************************************************************************************************************************************************************+=======================================================================================================================================+**************************+++++++++++++++++++++++++++++++++++++++++++++========================================================================-------------------==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################################################################################******#######************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::...................................................................................................................................................................................................................................................................::::::::::::...................................................................::::--===+++**********+++==---:::..............:::::-----------------===========++++*************************+++====--------------------------------------------------------------------------------------------------------------------------------------------#%@@%%@@%%%%%%%%%%%%%%%%%%%%%%%##%%%@@%#****++++++++**##%@@@@@@@@@%%%%%%%%%@@@@@@@@%#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%#####%%%%%%%##########################################################*********+*###*++++++++************+++++++++++******************+++++++++===========+==+***+++++++++++===================***=--------::-=+++=============++++===----:::::::::::::::::=+++==--------------------===::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::          .:::::::::                                     ...........................................................................................................................................................................................................................................................................................................................................................................:::::....                                                   ....................::---===============================================================================================================================-------------------------------------------------------------------------------==========++++++++++======------------------------------------------------------------------:::........:::::::....................................................................................:--=++++=-::............................................................................................................................................::--=+++++==--:::....................................................:::------::......................................................................................................................................................................................::::::::....................................................................................................::--==++++==---::::::.............................................................................................................................................::::--=++***##############################################**********##################**************************************************************************************************************************************************************************#########################################********************************************************************************************************************************************************************************************************************************************************+=====================================================================================================================================++*****************************++++++++++++++++++++++++++++++++++++++++++========================================================================-------------------==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################################################################################******#######************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::...................................................................................................................................................................................................................................................................::::::::::::...................................................................::::---===++***********+++==--::::.............:::::-----------------==========++++**************************+++===----------------------------------------------------------------------------------------------------------------------------------------------*%@@%@%%%%%%%%%%%%%%%%%%@%%%%%%#%#%%@%#**++++***#%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%##***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%####%%%%%%%##########################################################*********+*###*++++++++**#*********+++++++++++******************++++++++================+***+++++++++====================***=---------:-=+++=============++++===----:-::::::::::::::::=+++==---------------=----==-::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.          :::::::::                                     .............................::::::::......................................................................................................................................................................................................................................................................................................................................:::::....                                                  .....................::---===============================================================================================================================--------------------------------------------------------------------------------==========+++++++++=====-------------------------------------------------------------------:::........:::::::....................................................................................:--=++++=--:............................................................................................................................................::--=++++==--:::.....................................................:::------::......................................................................................................................................................................................::::::::....................................................................................................:::--======---:::::..............................................................................................................................................:::::--=++***##############################################**********##################***************************************************************************************************************************************************************************########################################********************************************************************************************************************************************************************************************************************************************************+=====================================================================================================================================+*******************************++++++++++++++++++++++++++++++++++++++++++========================================================================-------------=----==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###################################################################################******#########**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::...................................................................................................................................................................................................................................................................:::::::::::.....................................................................::::--===+++***********+++==---::.............:::::----------------==========+++++*************************+++====----------------------------------------------------------------------------------------------------------------------------------------------:-%@@%%%%%%%%%%%%@%%%@%%%%%%%%%%%%#%%%#***##%%@%@%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%#####***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%####%%%%%%%##########################################################*********++####++++++++************++++++++++++*****************++++++++=================+***+++++++=====================***=---------:-=+++=============++++===-----:::::::::::::::::-++++-----=--==-----------===-:::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::          :::::::::                                    ..........................:::::::::::::::::.................................................................................................................................................................................................................................................................................................................................:::::....                                                   ....................::---==============================================================================================================================-----------------------------------------------------------------------------------===========++++=======-------------------------------------------------------------------:::........:::::::...................................................................................::-==++++=--:............................................................................................................................................::--=++++==-:::.......................................................::------::.......................................................................................................................................................................................:::::::....................................................................................................::::---==---::::..................................................................................................................................................::::--=++***##############################################**********##################**************************************************************************************************************************************************************************##########################################*****************************************************************************************************************************************************************************************************************************************************+**+===================================================================================================================================+*********************************++++++++++++++++++++++++++++++++++++++++++==========================================================================----------=--=-==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###################################################################################******########***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::...................................................................................................................................................................................................................................................................:::::::::::.....................................................................::::---==+++************+++==--::::...........:::::-----------------=========++++**************************+++====-----------------------------------------------------------------------------------------------------------------------------------------------:#@%@%%%%%%%%%%%%%%%@%%%%%%%%%###%%%%%@@@@@@%%###%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%########***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%####%%%%%%%##########################################################*********++*###*+++++++************+++++++++++++***************+++++++++==================+****+++++====================+***+-----------=+++=============++++====----::::::::::::::::::=+++=--=-=--=-------------===-:::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::          .::::::::.                                  ..........................:::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................:::::....                                                  .....................::---==============================================================================================================================-------------------------------------------------------------------------------------====================-------------------------------------------------------------------:::........:::::::...................................................................................::-=+++++==-:............................................................................................................................................:::-=++++==-::........................................................::------::.......................................................................................................................................................................................:::::::.....................................................................................................::::------::::..................................................................................................................................................:::::--=++***##############################################**********##################**************************************************************************************************************************************************************************##########################################********************************************************************************************************************************************************************************************************************************************************++================================================================================================================================++***********************************++++++++++++++++++++++++++++++++++++++++++==========================================================================------------=-==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###################################################################################******#######************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::...................................................................................................................................................................................................................................................................:::::::::::......................................................................::::---==++*************+++==--:::...........::::------------------========++++**************************+++====----------------------------------------------------------------------------------------------------------------------------------------------:-:=@@@%%%%%%%%%@%%%%%%%%%%%%%%%%##%%%%@%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%###############**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%####%%%%%%%#########################################################*********++*###*++++++++***********++++++++++++++*************+++++++++=====================++*+++======================+**++=----------=+++=============++++====-----:::::::::::::::::-=+++=-----=--------------====:::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.         .::::::::.                                ...........................::::::::::::::::::::::::::::::::....................................................................................................................................................................................................................................................................................................................:::::....                                                  .....................::---==============================================================================================================================---------------------------------------------------------------------------------------=================--------------------------------------------------------------------:::........:::::::...................................................................................::-=++**+==-::...........................................................................................................................................:::-=++++=--::........................................................::------::.......................................................................................................................................................................................:::::::......................................................................................................:::::::::::....................................................................................................................................................:::::--=++***###############################################*********##################***************************************************************************************************************************************************************************#########################################*********************************************************************************************************************************************************************************************************************************************************+================================================================================================================================+*************************************++++++++++++++++++++++++++++++++++++++++++==========================================================================---------=-=-==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###################################################################################******######************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::....................................................................................................................................................................................................................................................................::::::::::.......................................................................::::--==+++*************+++==--:::..........::::------------------=======++++***************************+++====----------------------------------------------------------------------------------------------------------------------------------------------:::-%@%%%%%%%%%%@%%%%%@%%%%%%%%%%%%#%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%#######################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%#%##%%%%%%%##########################################################********++*###*++++++++*#*********++++++++++++==++*******+****+++++++========================+++=======================***+++----------=+++=============+++++====------::::::::::::::::=+++=--------=-----------=====::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.          :::::::::                                ..........................:::::::::::::::::::::::::::::::::::::::..............................................................................................................................................................................................................................................................................................................:::::....                                                  .....................::---==============================================================================================================================----------------------------------------------------------------------------------------===============---------------------------------------------------------------------:::........:::::::...................................................................................::-=++**+==-::...........................................................................................................................................:::-==+++=--::........................................................:::----:::........................................................................................................................................................................................:::::.........................................................................:::::..........................:::::::::.....................................................................................................................................................::::::-==+***##############################################************################***************************************************************************************************************************************************************************#########################################*********************************************************************************************************************************************************************************************************************************************************++=============================================================================================================================++***************************************++++++++++++++++++++++++++++++++++++++++++=========================================================================---------=-=-==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################################################################################*#***#######***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::....................................................................................................................................................................................................................................................................:::::::::........................................................................::::---==++**************+++==--:::........:::::------------------======+++++**************************+++=====---------------------------------------------------------------------------------------------------------------------------=====----------------::#@%%%%%%%%%%@%%%%%%%%@%%%%%%%%#%%%%%%%%%@@@@@@@@@@@@%%######################################**+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%%%%%%%%%#%###%%%%%%%#########################################################********++*####++++++++*##********+++++++++++++===+*******+***+++++++==================================================***+++=---------=+++=============+++++====------::::::::::::::::-=+++=--=-------------=----===-::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::          :::::::::                              ............................::::::::::::---::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................................................................................................................:::::....                                                 ......................::---==============================================================================================================================------------------------------------------------------------------------------------------============----------------------------------------------------------------------:::........:::::::...................................................................................::-=+***+==-::...........................................................................................................................................:::-==+++==-::........................................................:::----:::........................................................................................................................................................................................:::::.......................................................................::::::::............................:::........................................................................................................................................................::::::-==+***##############################################*****************###########***************************************************************************************************************************************************************************#########################################**********************************************************************************************************************************************************************************************************************************************************+============================================================================================================================++****************************************+++++++++++++++++++++++++++++++++++++++++++================================================================================-=-=-==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#######################################################################################**#######***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::.....................................................................................................................................................................................................................................................................:::::::..........................................................................::::--==++***************+++==--:::.......:::::------------------======++++**************************++++====---------------------------------------------------------------------------------------------------------------------------=======-------------:-::=@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%#########################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%###%%%%%%%#########################################################********+++*###++++++++*##*********++++++++++++====+***+***+***+++++==================================================+**+++++---------++++=============++++++====------:::::::::::::::-=++++=---------------------===-:::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-          .::::::::.                           ..............................:::::::::---------------:::::::::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................:::::....                                                 ......................::---==============================================================================================================================--------------------------------------------------------------------------------------------=========-----------------------------------------------------------------------:::........:::::::...................................................................................:--=+***+==-::............................................................................................................................................::-==+++==-::.........................................................:::---:::.........................................................................................................................................................................................::::......................................................................::::::::::.......................................................................................................................................................................................:::::--=+***#############################################**********************#######***************************************************************************************************************************************************************************#########################################********************************************************************************************************************************************************************************************************************************************************+**+=========================================================================================================================+++******************************************++++++++++++++++++++++++++++++++++++++++++=================================================================================----===----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#######################################################################################*#######************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::......................................................................................................................................................................................................................................................................:::::............................................................................::::--=+++***************+++==--:::......:::::------------------=====++++***************************+++=====----------------------------------------------------------------------------------------------------------------------------======-------------:::::%@@%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%@@@@@@@@%%############################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%##%%%%%%%#########################################################********+++*###*+++++++**#*********++++++++++++=====+********+***++++=================================================+**+++++=-------=++++==============+++++====------::::::::::::::::-=+++=--=--------------=---====-:::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.         .::::::::.                          ...............................::::::::--------------------------::::::::::::::::::::::::::::.......................................................................................................................................................................................................................................................................................:::::....                                                 ......................::---==============================================================================================================================-------------------------------------------------------------------------------------------------==-------------------------------------------------------------------------:::.........::::::..................................................................................::-==+***++=-::............................................................................................................................................::--=+++==-::.........................................................:::---:::.........................................................................................................................................................................................::::....................................................................::::::::::::........................................................................................................................................................................................::::--=++***########################################****************************#####***************************************************************************************************************************************************************************#########################################***********************************************************************************************************************************************************************************************************************************************************++======================================================================================================================++++********************************************+++++++++++++++++++++++++++++++++++++++++++===============================================================================-=--===----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##########################################################################################*###*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::........................................................................................................................................................................................................................................................................................................................................................:::--==++****************++===--::......::::-------------------=====++++***************************+++====------------------------------------------------------------------------------------------------------------------------------====---------------::::*@%%%%%%%%%%%@%%@%%%%@%%%%%%%%%%%%%%%%%%%@@@@@@%%##############################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%@%%%%%%%%%%##%%%%%%%#########################################################*******#+++*###*+++++++**#*********+++++++++++++======+*+**+*++***+===================================================***+++++=-------=++++==============+++=++====------:::::::::::::::-==+++=-=------------=----====+-:::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.         .:::::::::                         ................................::::::::--------------------------------------:::::::::::::::::......................................................................................................................................................................................................................................................................................:::::....                                                 ......................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........::::::..................................................................................::-==+***++=-::............................................................................................................................................::--=++++=-:::........................................................::::--:::.........................................................................................................................................................................................::......................................................................:::::::::::::.......................................................................................................................................................................................::::--=++***###################################*********************************#####***************************************************************************************************************************************************************************#########################################************************************************************************************************************************************************************************************************************************************************************+=====================================================================================================================++***********************************************+++++++++++++++++++++++++++++++++++++++++++===============================================================================-=--===----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#############################################################################################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::........................................................................................................................................................................................................................................................................................................................................................::::-==++*****************++==--:::....:::::-------------------====++++***************************+++=====-------------------------------------------------------------------------------------------------------------------------------==-----------------:::-@@%%%%%%%@%@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%@@@@%#################################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%#%%%##%%%%%%%########################################################*********++*###*++++++++#**********+++++++++++++=======+**+*+*+++**++=================================================***++++++-------=++++==============++=-++=====-----::::::::::::::::-=+++=--=-=-----------------===-::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::          :::::::::                        .................................::::::::-----------------------------------------------::::::::......................................................................................................................................................................................................................................................................................:::::....                                                 ......................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........::::::......................................................::..........................::-=++***++=-::............................................................................................................................................::--=++++=-:::........................................................:::::::::................................................................................................................................................................................................................................................................::::::::::::::........................................................................................................................................................................................::::-=++***###############################**************************************####***************************************************************************************************************************************************************************#########################################*************************************************************************************************************************************************************************************************************************************************************+====================================================================================================================***************************************************+++++++++++++++++++++++++++++++++++++++++++=============================================================================-=--===---------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********###########################################################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::.......................................................................................................................................................................................................................................................................................................................:::...............................:::--=+++*****************++==--::::..:::::------------------====++++****************************++=====---------------------------------------------------------------------------------------------------------------------------------=----------------:::::#@@%@##@%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%##################################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+#%%%%%%%%%%%%%###%%%%%%%########################################################*********++*###*++++++++*#*********+++++++++++++========+*++*+++++*+++===============================================+**+++++++-------=++++==============++=-++=====-----::::::::::::::::-==+++==-=------------------====-::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::          :::::::::                      ...................................::::::::---------------------------------------------------::::......................................................................................................................................................................................................................................................................................:::::....                                                 ......................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........::::::....................................................::::..........................::-=++***++=-::............................................................................................................................................::--=++++=-:::.........................................................::::::::................................................................................................................................................................................................................................................................::::::---:::::........................................................................................................................................................................................::::-==+***##############################*********************+++++++++++*******####***************************************************************************************************************************************************************************#########################################**************************************************************************************************************************************************************************************************************************************************************+==================================================================================================================+****************************************************+++++++++++++++++++++++++++++++++++++++++++============================================================================-=---==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********###########################################################################################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::.....................................................................................................................................................................................................................................................................................................................:::::::..............................::--==++*****************+++==--::::::::::------------------====++++***************************+++====---------------------------------------------------------------------------------------------------------------------------------------------------::::.+@%@%##%%@%%%%%%@%#%@%%%%%%%%%%%%%%%%%%%%%%@@%####################################################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%###%%%%%%%########################################################*********++*####++++++++*#*********+++++++++++++=========+++*++*+++*+++==============================================+**+++++++=------=++++==============++=:=++====------::::::::::::::::-==+++=-=-=-----------------====::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.         .::::::::.                    .....................................:::::::----------------------------------------------------:::......................................................................................................................................................................................................................................................................................:::::....                                                 .....................:::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........::::::...................................................::::::.........................::-=+****++=-::............................................................................................................................................::--=++++=--::.........................................................::::::::...............................................................................................................................................................................................................................................................::::::----:::::........................................................................................................................................................................................::::--=+***#############################*****************+++++++++++++++++******####***************************************************************************************************************************************************************************##########################################**************************************************************************************************************************************************************************************************************************************************************+================================================================================================================+*******************************************************++++++++++++++++++++++++++++++++++++++++++===========================================================================-==--==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********###########################################################################################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::....................................................................................................................................................................................................................................................................................................................::::::::..............................:::--=++******************+++==--:::::::::------------------===++++***************************+++====---------------------------------------------------------------------------------------------------------------------------------------------------:-::::-%@@%###@%%@%%@%%%#%@%%%%%%%%##%%%%%%%%%%%%%@%####################################################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%###%%%%%%%#########################################################*********++*###*+++++++*#*********+++++++++++++==========+*++++++++++++=============================================+*++++++++=------=++++==============++=:-++=====-----::::::::::::::::--=+++==---------------------===-::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::         .::::::::.                  .......................................::::::::--------------------------------------------------::::......................................................................................................................................................................................................................................................................................:::::....                                                 .....................:::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........::::::...................................................::::::........................::--=+*****+=-::............................................................................................................................................::--=++++=--::.........................................................:::::::::..............................................................................................................................................................................................................................................................:::::-----:::::.........................................................................................................................................................................................:::--=+****############################*******+++++++++++++++++++++++++++******###*****************************************************************************************************************************************************************************#########################################***************************************************************************************************************************************************************************************************************************************************************+===============================================================================================================**********************************************************+++++++++++++++++++++++++++++++++++++++++==============================================================================-==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********##########################################################################################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::...................................................................................................................................................................................................................................................................................................................:::::::::..............................:::--=+++******************+++==--::::::::------------------===++++***************************+++===--------------------------------------------------------------------------------------------====----------------------------------------------------:-:::::*@%%###%@%%%%@%%%%%@%%%%%%%#=*#%%%%%%%%%%%%@%%####################################################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+#%%%%%%%%%%%%###%%%%%%%%########################################################*********++*###*+++++++*#*********+++++++++++++===========+++++++++++++==========================================-==*++++++++++------=++++==============++=::=+=====-----:::::::::::::::::-==+++=-------------------=-====-:::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::         .:::::::::                  .......................................::::::::--------------------------------------------------::::......................................................................................................................................................................................................................................................................................:::::....                                                 .....................:::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........::::::..................................................::::::::.......................::-==+*****+=--:............................................................................................................................................::--=++++=--::.........................................................::::::::..............................................................................................................................................................................................................................................................::::::----::::::.........................................................................................................................................................................................:::--=+****###########################******+++++++++++++++++++++++++++++******###*****************************************************************************************************************************************************************************#########################################****************************************************************************************************************************************************************************************************************************************************************+=============================================================================================================+**********************************************************++++++++++++++++++++++++++++++++++++++++++=============================================================================-==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********##########################################################################################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::..................................................................................................................................................................................................................................................................................................................::::::::::...............................:::-==++*******************+++==--::::::------------------====+++****************************++===---------------------------------------------------------------------------------------------=============---==---------------------------------------:::::.=@%%#####@%%%%%%%%%@%%%%%%*=:=##%%%%%%%%%%%%%%%####################################################****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++*#%%%%%%%%%%%%##%%%%%%%%########################################################*********++*###*+++++++*#*#*******+++++++++++++============+*+++++++++++=========================================-=++++++++++++------=++*+==============++=::=++=====-----::::::::::::::::--=+++==---------------------====::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.         :::::::::                 .........................................::::::::::-----------------------------------------------::::......................................................................................................................................................................................................................................................................................:::::....                                                 .....................:::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........::::::.................................................:::::::::.......................::-=++*****+=--:.............................................................................................................................................::-=++++=--::.........................................................::::::::..............................................................................................................................................................................................................................................................:::::-----::::::.........................................................................................................................................................................................:::--=++***###########################*****++++++++++++++++++++++++++++++*****####*****************************************************************************************************************************************************************************#########################################*****************************************************************************************************************************************************************************************************************************************************************+===========================================================================================================+*************************************************************++++++++++++++++++++++++++++++++++++++++=============================================================================-==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********##########################################################################################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::..................................................................................................................................................................................................................................................................................................................::::::::::...............................:::--=+++*******************++==---:::::------------------===++++***************************+++===-------------------------------------------------------------------------------------------=========================----------------------------------::::.::%%%###*-%@@%%%%%%%%%%%%*=:-::-*##%%%%%%%%%%%@%%###################################################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++*#%%%%%%%%%%%####%%%%%%%########################################################************###*+++++++*#*#*******+++++++++++++=============+++++++++++++==========================================++++++++++++=-----=++**===============+=::-=+=====-----:::::::::::::::::--=+++==--------------------=-==-:::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.         :::::::::.                .........................................::::::::::::::::::::::::-------------------------------:::::.......................................................................................................................................................................................................................................................................................:::::....                                                 .....................:::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........:::::..................................................:::---:::.......................::-=++*****+=--::............................................................................................................................................::-=++++=--::.........................................................::::::::.............................................................................................................................................................................................................................................................::::::----::::::...........................................................................................................................................................................................:::-=++***###########################*****+++++++++++++++++++++++++++++******#####****************************************************************************************************************************************************************************#########################################*************************************************************************************************************************************************************************************************************************************************************+****+=========================================================================================================+**************************************************************+++++++++++++++++++++++++++++++++++++++++============================================================================-==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********##########################################################################################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::.................................................................................................................................................................................................................................................................................................................:::::::::::...............................:::--==++********************++==---:::-------------------===+++****************************++===--------------------------------------------------------------------------------------------===========================-------------------------------::::::..+@%###+.*@%%%%@%%%%%%%#-..-:.:-*##%%%%%%%%%%@%%%###################################################****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++#%%@%%%%%%%%#####%%%%%%%#######################################################************####+++++++***#********+++++++++++++=============+*+++++++++++=========================================*+++++++++++=-----=++**===============+=:::=+======-----::::::::::::::::--==+++-=------------------=-==-=::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::         .::::::::.                .........................................:::::::::::::::::::::::::::::::-----------------::::::::::::.......................................................................................................................................................................................................................................................................................:::::....                                                 .....................:::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........:::::..................................................::-----::.......................::-=+******+=--::............................................................................................................................................::-=++++==-::.........................................................::::::::.............................................................................................................................................................................................................................................................::::::--::::::::...........................................................................................................................................................................................:::-=++***###########################*****++++++++++++++++++++++++++++******######****************************************************************************************************************************************************************************#########################################**************************************************************************************************************************************************************************************************************************************************************+**+*+=======================================================================================================+****************************************************************+++++++++++++++++++++++++++++++++++++++++===========================================================================-===----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---:::::...............................................................................................................................................................................................................................................................................................................::::::::::::................................:::-==++********************+++==-----------------------====+++***************************+++==---------------------==---------------------------------------------------------------------================================---------------------------::::::..:@%###:.-@@%%%@%%%%%%%=...--:.:-*##%%%%%%%%%%@%%%%########################################%%%%%%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++*#%@%%%%%%%%####%%%%%%%%#######################################################*************###+++++++*#**#*******+++++++++++++==============++++++++++++++====================================-=+*+++++++++++=-----=++**===============+=:::-++=====-----:::::::::::::::::--=+++=-------=-------------====-:::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::         .:::::::::                .........................................::::::::::::::::::::::::::::::::::::----------:::::::::::::.......................................................................................................................................................................................................................................................................................::::::....                                               .......................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........:::::.................................................:::-----:::......................::-=+******+=--::............................................................................................................................................::-==+++==-::..........................................................:::::::.............................................................................................................................................................................................................................................................:::::--::::::::............................................................................................................................................................................................:::-==+***###########################*****+++++++++++++++++++++++++++*******#####*****************************************************************************************************************************************************************************#########################################********************************************************************************************************************************************************************************************************************************************************************+====================================================================================================++*******************************************************************+++++++++++++++++++++++++++++++++++++++===============================================================================-=-------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---:::::...............................................................................................................................................................................................................................................................................................................:::::::::::.................................:::--==++********************+++==----------------------===+++****************************++===--------------------===----------------------------------------------------======----------========================================--------------------::::::...#%%##...#@@@%%@%%%%%*....:=:..:-+###%%%%%%%%%%%%%%#################################%%%%@@@@@@@@@@@#****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++*#%@%%%%%%%%#####%%%%%%%#######################################################*************###*+++++++***********+++++++++++++===============+++*+++++++++======================================**++++++++++++-----=++**===============+=::::=+=====------::::::::::::::::-===+++=--=----=-------------====-::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.        .:::::::::                .........................................::::::::::...............:::::::::::::::::-:::::::::::::..........................................................................................................................................................................................................................................................................................::::::....                                              ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.........:::::.................................................:::-----:::......................::-=+******+=--::............................................................................................................................................::-==+++==-::..........................................................::::::..............................................................................................................................................................................................................................................................:::::::::::::::............................................................................................................................................................................................:::--=+***###########################*****++++++++++++++++++++++++++********######****************************************************************************************************************************************************************************#########################################********************************************************************************************************************************************************************************************************************************************************************++=================================================================================================++**********************************************************************+++++++++++++++++++++++++++++++++++++++==============================================================================-=--------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----:::::..........................................................................................................................................................................................................................................................................:::::................................::::::::::...................................:::--=+++********************+++==---------------------===+++***************************+++==---------------------===--------------------------------------------------================================================================--------------::::::...=@%%*...-%@%@@%%%%%+:.....--:.--:=###%%%%%%%%%@@@%%#############################%%@@@@@@@@@@@@@%%%#****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++##%@%%%%%#%#####%%%%%%%%######################################################*************###*+++++++*#*********+++++++++++++================++++++++++++++====================================**++++=+++++++-----=++**+==============+=::::-++=====-----:::::::::::::::::-==++++=-=--=-=--------------====:::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::         :::::::::                .........................................::::::..........................:::::::::::::::::.................................................................................................................................................................................................................................................................................................::::::....                                              ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.........:::::.................................................::---=---::......................:--=+******+=--::............................................................................................................................................::-==+++==-:::...........................................................:::..............................................................................................................................................................................................................................................................::::::::::::::::............................................................................................................................................................................................:::--=+***###########################*****+++++++++++++++++++++++++*******########****************************************************************************************************************************************************************************#########################################**********************************************************************************************************************************************************************************************************************************************************************+==============================================================================================++*************************************************************************++++++++++++++++++++++++++++++++++++++==============================================================================-=-=------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########################################################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----:::::.........................................................................................................................................................................................................................................................................:::::::...............................:::::::::....................................:::--==++*********************+++===------------------===+++****************************++===---------------------====--------------------------------------------------================================================================--------------:::::...:%%%+....#@%@%%%%@%-......:--:=-.:=*##%%%%%%%%%%@@%############################%%%%%%%@@@@@@@@@@%%#*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%@%%%%%#%#####%%%%%%%%#######################################################************###*+++++++*#*********++++++++++++++================*++++++++++++===================================+#*++++-=++++++=----=++**+==============+=:::::=+=====------::::::::::::::::-===+++=----==------------------=-::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::         :::::::::                ..............................................................................::::::::::...................................................................................................................................................................................................................................................................................................::::::....                                              ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.........:::::.................................................::--===--::......................:--=+******+=--::............................................................................................................................................::--=++++=-:::............................................................................................................................................................................................................................................................................................................................::::::::::::::..............................................................................................................................................................................................:::--=++**###########################******+++++++++++++++++++++++**********####******************************************************************************************************************************************************************************########################################************************************************************************************************************************************************************************************************************************************************************************+==========================================================================================+++****************************************************************************+++++++++++++++++++++++++++++++++++++++============================================================================-=-=------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########################################################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----:::::.........................................................................................................................................................................................................................................................................:::::::..........:::.................::::::::::.....................................:::--==++*********************+++===-----------------===+++***************************+++==----------------------====---------------------------------------------------================================================================--------------::::....*%%=....-@@%%@%@%@+.......:==-....:+#%%%%%%%%%%%@@%########################%%@@@@@@@@@@@@@@@@@@@@%#****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*#%%%%%%%%%%#####%%%%%%%#######################################################************####+++++++*#**********+++++++++++++=============--=+*++++++++++++==================================***++++=-++++++=----=++**+==============+=:::::-+======-----:::::::::::::::::-==++++=--=---------------------=-::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.        .::::::::.               ..................................................................................::::.....................................................................................................................................................................................................................................................................................................::::::....                                              ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.........:::::.................................................::--===--::......................:--=+******+=--::............................................................................................................................................::--=++++=-:::............................................................................................................................................................................................................................................................................................................................:::::::::::::................................................................................................................................................:::::...........................................:::-=++**###########################*******+++++++++++++++++++++************##*******************************************************************************************************************************************************************************########################################*************************************************************************************************************************************************************************************************************************************************************************++======================================================================================++*********************************************************************************+++++++++++++++++++++++++++++++++++++============================================================================-=-=------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########################################################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----:::::........................................................................................................................................................................................................................................................................::::::::.........::::.................::::::::::.....................................:::--==+++*********************+++===----------------===++****************************++===----------------------====----------------------------------------------------------==========================================================-------------::::....-@%=.....#@%@%@%%@#:.......:-:.....:-*%@%%%%%%%%%@%%###################%%@@@@@@@@@@@@@@@@%##%%%%%%#*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%@%%%%%%%#####%%%%%%%#######################################################************####+++++++*#**********+++++++++++++==============-=-++++++++++++++=================================***+++++-++++++=----=++**+==============+=::::::=+=====------::::::::::::::::---=++++=---------------------=-=-::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.        .:::::::::               ...........................................................................................................................................................................................................................................................................................................................................................................................::::::....                                              ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.........:::::.................................................::--====-::......................:--=+******+=--::............................................................................................................................................::--=++++=--::............................................................................................................................................................................................................................................................................................................................::::::::::::...............................................................................................................................................:::::::::.........................................:::-=++***##########################*******+++++++++++++++++++++**********************************************************************************************************************************************************************************************######################################************************************************************************************************************************************************************************************************************************************************************************+**++===================================================================================++************************************************************************************+++++++++++++++++++++++++++++++++++++========================================================================-==--==-=----------------------------------------------------------------------------------------------------------------------------:::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########################################################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----:::::........................................................................................................................................................................................................................................................................:::::::::.......:::::.................:::::::::.......................................:::--==++**********************+++====-------------===+++***************************+++==-----------------------====-----------------------------------------------------------------====================================================-------------::::....%%=.....-%@%@%@%%%+.................:+%@%%%%%%%%%@%################%%@@@@@@@@@@@@@@@@@@#********###****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@%%%%%%%######%%%%%%%######################################################*************###*++++++*#**********+++++++++++++===========-===-==+++++++++++++++==============================+***+++++-=+++++=----=++**+================-:::::-=======-----:::::::::::::::::---+++++=-=------------------=--=-:::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::        .:::::::::               ......................................................  ...................................................................................................................................................................................................................................................................................................................................::::::....                                              ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........:::::.................................................::-=====--::....................::--=+******+=--::............................................................................................................................................::--=++++=--::.............................................................................................................................................................................................................................................................................................................................::::::::::...............................................................................................................................................::::::::::.........................................:::-==+****#####*###################********+++++++++++++++++++***********************************************************************************************************************************************************************************************######################################**************************************************************************************************************************************************************************************************************************************************************************++++================================================================================++****************************************************************************************+++++++++++++++++++++++++++++++++++========================================================================-==--==-=-----------------------------------------------------------------------------------------------------------------------------::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----:::::.......................................................................................................................................................................................................................................................................::::::::::.......:::::................::::::::::........................................:::--=+++*********************++++====------------===+++**************************+++===-----------------------====--------------------------------------------------------------------==================================================------------::::....+%-......*@@%@%@%@#...................*%%%%%%%%%%@%#############%%@@@@@@@@@@@@@@@@@@@%%%%#****#%%###***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@%%%%%%%######%%%%%%%######################################################*************###*++++++*#*#********+++++++++++++============------=++++++++++++++++============================+**++++++--++++++----=++**+================-::::::=+=====-----:::::::::::::::::---=+++++--=-------------==----==--:::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-         :::::::::               ..................................................       .......... .......................................................................................................................................................................................................................................................................................................................::::::....                                              ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........:::::.................................................::-=====--::....................::--=+******+==-::............................................................................................................................................::--=++++=--::.............................................................................................................................................................................................................................................................................................................................:::::::::................................................................................................................................................:::::::::::........................................:::--=+*************################********+++++++++++++++++++***********************************************************************************************************************************************************************************************##################*##################******************************************************************************************************************************************************************************************************************************************************************************++=============================================================================++********************************************************************************************++++++++++++++++++++++++++++++++++=======================================================================-==--=--=------------------------------------------------------------------------------------------------------------------------------:::::::::::::::
+++**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::........................................................................................................................................................................................................................................................................::::::::::......:::::::...............::::::::::........................................::::-==+++**********************+++====----------===+++***************************+++==------------------------====-----------------------------------------------------------------------================================================------------:::....:-.......-%@@%%%@@%=..................:%%%%%%%%%%%%##########%%@@%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%###**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%@%%%%%%######%%%%%%%#######################################################************###*++++++*#**********+++++++++++++==========---------+++++++++++++++*+===========================***++++++=-++++++----=++**+=================:::::::=======-----:::::::::::::::::--=+++++=-=-===----=----------===-:::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.        :::::::::.               ..............................................           .................................................................................................................................................................................................................................................................................................................................::::::....                                              ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........::::..................................................::-=====--::....................::-=++**#***+==-::...........:................................................................................................................................::--=++++=--::...............................................................................................................................................................................................................................................................................................................................:::::................................................................................................................................................:::::::::::::.........................................::--=++*************###############********++++++++++++++++++**************************************++*********************************************************************************************************************************************************#############********##############********************************************************************************************************************************************************************************************************************************************************************************++==========================================================================++**********************************************************************************************+++++++++++++++++++++++++++++++++++============================================================================-=------------------------------------------------------------------------------------------------------------------------------::::::::::::::::
+++**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::........................................................................................................................................................................................................................................................................:::::::::.......:::::::...............::::::::::.........................................:::--==++***********************+++====--------====++****************************++===------------------------====------------------------------------------------------------------------=================================================----------::::............:+%@@%@%%@*...................*%%%%%%%%%%%%########%%%#%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%@%%%%%%######%%%%%%%#######################################################************###*+++++++***********++++++++++++++========----------=++++++++++++++**+=========================+***++++++=-=+++++----=++**+=================-::::::-+======----:::::::::::::::::---=+++++=-========----------=--==-:::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::        .::::::::.                .............................................           .................................................................................................................................................................................................................................................................................................................................::::::....                                             .........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........::::..................................................::-=====--::....................::-=++**##**+==-::.........::::................................................................................................................................::-=++++=--::...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::.........................................::--=++**************#############*********++++++++++++++++++*************************************************************************************************************************************************************************************************#############********##############*********************************************************************************************************************************************************************************************************************************************************************************++=======================================================================++*************************************************************************************************+++++++++++++++++++++++++++++++++++===========================================================================-=------------------------------------------------------------------------------------------------------------------------------::::::::::::::::
++++*************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::.......................................................................................................................................................................................................................................................................::::::::::.......:::::::...............::::::::::.........................................::::--=+++***********************+++====------====+++***************************+++==-------------------------====--------------------------------------------------------------------------================================================---------::::.............:+@@@%@%@%-..................-%%%%%%%%%%%%%#####*#%###%@@@@@@@@@@@@%%%%%%%%%%%%##%%%%%%###*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@@%%%%%######%%%%%%%#######################################################************####+++++++**#********++++++++++++++========-----------=+++++++++++++**+=========================+#*++++++++-=+++++----=++**+=================-:::::::=======-----:::::::::::::::::---+++++=-========---------==--==-:::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-        .:::::::::                 .........................................              ........ ..  ....................................................................................................................................................................................................................................................................................................................::::::....                                            ..........................::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........::::..................................................::-======-::....................::-=++**##**+==-::........::::::...............................................................................................................................::-==+++==-::...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::.........................................:::-==+**************###########***********++++++++++++++++++**************************************************************************************************************************************************************************************************###########**********#############**********************************************************************************************************************************************************************************************************************************************************************************++===================================================================++******************************************************************************************************+++++++++++++++++++++++++++++++++++============================================================================-----------------------------------------------------------------------------------------------------------------------------::::::::::::::::
+++++************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::.......................................................................................................................................................................................................................................................................:::::::::........:::::::...............::::::::::..........................................:::--==++************************+++====----=====++***************************+++===-------------------------====-------------------------------------------------------------------------------=============================================-------::::...............#@%%@%%@+...................#%%%%%%%%%%@%#######%###@@@%@@@@@@@%%%%%%%%%%%%%#####%%%%###*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*##@%%%%%%#######%%%%%%#######################################################*************###*++++++**#********++++++++++++++========----------=-=++++++++++++****+=======================***++++++++--+++++=---=++**+=================-:::::::-+======----:::::::::::::::::---=+++++=--========----------==-=-:::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.        :::::::::                .........................................               .......         ..................................................................................................................................................................................................................................................................................................................:::::.....                                          ...........................::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........::::..................................................::-======-::....................::-=++**##**++=-::........::::::...............................................................................................................................::-==+++==-::...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::.........................................:::--=++**************#########************+++++++++++++++++****************************************************************************************************************************************************************************************************##########**********##########**************************************************************************************************************************************************************************************************************************************************************************************+++===============================================================++********************************************************************************************************+++++++++++++++++++++++++++++++++++============================================================================-----------------------------------------------------------------------------------------------------------------------------::::::::::::::::
+++++************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#######################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::.......................................................................................................................................................................................................................................................................:::::::::.......:::::::::.............::::::::::................::::........................:::--==++************************+++===========+++***************************+++==--------------------------====------------------------------------------------------------------------------------=========================================------::::...............-@%@%%@@#:..................=%%%%%%%%%%%%%%%###%###%@@@@@@@@@@%#%%%%%%%%%%%#######%%%###*++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%@%%%%%#######%%%%%%#######################################################*****#*******###*++++++*##********++++++++++++++========----------==-=+++++++++++*****+======================***++++++++--+++++=---=++**+==================::::::::=======-----::::::::::::::::-=--=++++=--====-====--------===-=-:::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::        :::::::::                .....................................  ..               .......          .................................................................................................................................................................................................................................................................................................................:::::.....                                          ...........................::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........:::..................................................::-==+===-::....................::-=+***##**++=-::........::::::...............................................................................................................................::-==+++==-::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::.........................................:::--=+++*************########*************++++++++++++++++++***************************************************************************************************************************************************************************************************#########************#########*************************************************************************************************************************************************************************************************************************************************************************************+*++==============================================================++**********************************************************************************************************++++++++++++++++++++++++++++++++++============================================================================-=---------------------------------------------------------------------------------------------------------------------------::::::::::::::::
++++++***********************************+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----:::::......................................................................................................................................................................................................................................................................::::::::........:::::::::::...........::::::::::...............:::::.........................:::--=++*****############********+++==========++***************************+++===--------------------------====-----------------------------------------------------------------------------------------===================================-------::::................*@@%@@%@=..................:%%%%%%%%%%%@%%%#######%@@%@@@@@@%##%%%%%%%%%%%########%%###*++=-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@%%%%%########%%%%%%######################################################*****#*******###*++++++*##********++++++++++++++========----------==--++++++++++********+===================+#**++++++++=-=++++=---=++**+==================::::::::-======-----::::::::::::::::-=--=+++++=-====-====--------=-==-=-::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-        :::::::::.                .................................                       .....            ................................................................................................................................................................................................................................................................................................................:::::.....                                     ...............................:::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........:::..................................................::-==++==--::...................::-=+***##**++=-::........::::::...............................................................................................................................::--=++++=-::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::.........................................:::--==+++*************######*************++++++++++++++++++++*************************************************************************************************************************************************************************************************************************#*######************************************************************************************************************************************************************************************************************************************************************************************++*+++===========================================================+*************************************************************************************************************++++++++++++++++++++++++++++++++++===========================================================================-=---------------------------------------------------------------------------------------------------------------------------::::::::::::::::
++++++***********************************+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----:::::................................................................................................................................................................................................................................................................:.....:::::::.........::::::::::::::::::::::::::::::::..............::::::.........................:::--==++****##############*******++++=======+++**************##*##*******++++===--------------------------===----------------------------------------------------------------------------------------------===============================------::::.................:%@@%@@@*:..................*@%%%%%%%%%%%%#######%@@@@@@@@@%**#@%%%%%%%%%#########%%###*+=-::-=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%@%%%%########%%%%%%######################################################*****#*******###*++++++*##********++++++++++++++========----------=----+++++++++*********+==================+#*+++++++++=-=++++=---=+++*+==================:::::::::-======-----:::::::::::::::--=-==++++============-----===--=-=-:::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.       .::::::::.                ..............................                          .....          . ................................................................................................................................................................................................................................................................................................................:::::.....                                     ...............................:::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........:::..................................................::-==++==--::...................::-=+***##**+==-::.......:::::::...............................................................................................................................::--=++++=--::...........................................................:::..................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::..........................................:::-==+++++++++*******#####**************+++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************####**********************************************************************************************************************************************************************************************************************************************************************************+***+***++==========================================================+****************************************************************************************************************++++++++++++++++++++++++++++++++==========================================================================-=----------------------------------------------------------------------------------------------------------------------------:::::::::::::::
++++++***********************************+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----:::::...............................................................................................................................................................................................................................................................::.::..::::::..........::::::::::::::::::::::::::::::::..............::::::..........................:::--==++****##############*******+++++====+++**********#***###*###******++++==---------------------------===--------------------------------------------------------------------------------------------------==========================------::::...................+@@@%@@#:..................-%@%%%%%%%%%%%#######%@@%@@@@@%***#@%%%%%%%%%##%######%%##**+=-:::=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%@%%%%########%%%%%%######################################################*****#*******###*++++++**#********++++++++++++++========----------==---=++++++++***********+================+**+++++++++=--++++=---=+++*+==================::::::::::=+====-----::::::::::::::::-=-==+++++==--===-===-----=--=--===-::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::       .:::::::::                .............................                           .....         .. ................................................................................................................................................................................................................................................................................................................:::::.....                                     ...............................:::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........:::..................................................::-==++==--::...................::-=+***##**+==-::.......:::::::...............................................................................................................................::--=++++=--::.........................................................::::::.................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::...........................................:::-==++++++++++*******###***************++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************###****************************************************************************************************************************************************************************************************************************************************************************************++*++=========================================================+****************************************************************************************************************+++++++++++++++++++++++++++++++++=======================================================================-=-==---------------------------------------------------------------------------------------------------------------------------:::::::::::::::
++++++*********************************++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----:::::..............................................................................................................................................................................................................................................................:::.::..:::::..........:::::::::::::::::::::::::::::::::.............:::::::...........................:::--=++*****##############*******+++++++++++******##############******++++===---------------------------===------------------------------------------------------------------------------------------------------=====================------::::....................:#@@@%@*....................#@@%%%%%%%%%%%%#####@@@@@@@@@#***#@%%%##%%%%%%#######%###*++=::::-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##@%%%############%%%#######################################################****#********##**+++++*#*********+++++++++++++++=======----------==----++++++++*************+==============+*+++++++++++--++++=---+++++==================+::::::::::-=====------:::::::::::::::-=-=-=++++=-==-=-======---------===-:::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-        :::::::::                ............................                             ...            .................................................................................................................................................................................................................................................................................................................:::::.....                                     ...............................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........:::.................................................:::-==+++=--::...................::-=+***#***+=--:........:::::::...............................................................................................................................::--=++++=--::........................................................::::::::................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::..........................................::::--==+++++++++*************************++++++++++++++++++++++++++++++++*********++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++===========================================================******************************************************************************************************************+++++++++++++++++++++++++++++++++========================================================================-====-------------------------------------------------------------------------------------------------------------------------:::::::::::::::
++++++*********************************++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----:::::..............................................................................................................................................................................................................................................................:::.......::...........:::::::::::::::::::::::::::::::::.............:::::::...........................:::--==++****################*******++++++++*******##############*****+++++===---------------------------===-----------------------------------------------------------------------------------------------------------================-----:::::.....................-%@%@@*....................*@%%%%%%%%%%%%%%%%%%@@@@@@@@%****#%%###%%%%@@@%######%##**+=-:::::=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%@%%%#%#########%%%#######################################################****#********###*+++++************++++++++++++++=======----------==-----+++++++**************+=============+*+++++++++++--=+++=---+++++==================+-::::::::::======-----:::::::::::::::---===+++++====-=======-------======-::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.       :::::::::                ............................                             ...             ................................................................................................................................................................................................................................................................................................................:::::.....                                     ...............................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........::..................................................::--=++++=--::...................::-=+*******+=--:........:::::::...............................................................................................................................::--=++++=--::........................................................::::::::................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::...........................................:::--==+++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+***++===============================================================*******************************************************************************************************************++++++++++++++++++++++++++++++++=============================================================================-------------------------------------------------------------------------------------------------------------------------:::::::::::::::
++++++*********************************++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#####################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----:::::..............................................................................................................................................................................................................................................................:::....................:::::::::::::::::::::::::::::::::.............::::::.............................:::--==++***#################********+++++******################****+++++====---------------------------===------------------------------------------------------------------------------------------------------------------========------:::........................*@@@@*....................=%@@%%%%%%%%%%%%%%%@@@@@@@@@*****#%%###%%##@@@%######%##**+=-:::::-=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%@%%%%%#########%%%#######################################################****#********###*+++++************++++++++++++++=======----------==-----+++++++****************+===========+*+++++++++++--=++++---+++++==================+-:::::::::::=====------:::::::::::::::-=====++++=--=-========--===========::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:       :::::::::.                ...........................                             ...             ................................................................................................................................................................................................................................................................................................................:::::.....                                     ...............................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--=++++==-::...................::-=+*******+=-::........:::::::...............................................................................................................................:::-=++++=--::.......................................................::::---:::....................................................................................................................................................................................................................................................................................::::......................................................................................................................::::::::::::::..........................................:::::--==+++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++================================================================********************************************************************************************************************++++++++++++++++++++++++++++++++=============================================================================------------------------------------------------------------------------------------------------------------------------:::::::::::::::
++++++********************************+++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#####################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----:::::..............................................................................................................................................................................................................................................................:::...................::::::::::::::::::::::::::::::::::.............::::::.............................:::--==++****##################****************#################****++++=====---------------------------===---------------------------------------------------------------------------------------------------------------------====------::::........................:#@@@+....................:%@@%%%%%%%%%%%%%%@@@@@@@@@#******%%###%%##@@@@#####%%#**+==:::::::-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###@%%%%%##########%%#######################################################****#********###*++++++*##********++++++++++++++=======----------==-----=++++++******************+========-+++++++++++++---++++---+++++==================*-:::::::::::-======----::::::::::::::::-=-==+++++-=-===================-==-::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::       .::::::::.                 .........................                               ..             ...  ...........................................................................................................................................................................................................................................................................................................::::......                                    ................................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--=++++==-::...................::-=++*****++=-::........::::::.................................................................................................................................::-==+++==-::.......................................................::------::..................................................................................................................................................................................................................................................................................:::::::.....................................................................................................................:::::::::::::..........................................::::::--==++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++===================================================================********************************************************************************************************************+++++++++++++++++++++++++++++++++=============================================================================-----------------------------------------------------------------------------------------------------------------------:::::::::::::::
++++++********************************+++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#######################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----:::::.............................................................................................................................................................................................................................................................::::...................:::::::::::::-----:::::::::::::::::............::::::.............................::::--==++****##################**************#################****++++======---------------------------====------------------------------------------------------------------------------------------------------------------------------::::.........................=%@%-.....................*@@%%%%%%%%%%%%@@@@@@@@@@@*******#%##%%###@@@@#####%%#**+=-::::::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%#%##########%%#######################################################****#********####++++++*##********++++++++++++++=======----------==------++++++*********************+======+++++++++++++=--++++--=+++++==================*-::::::::::::-=====----::::::::::::::::-=-==+++++====-=====================-:::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.      .:::::::::                 .........................                               ..              ..   .....................................................................................................................:.....................................................................................................................................................................................:::......                                    ................................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==++++==-::...................::-=++*****+==-:.........::::::.................................................................................................................................::-==+++==-::......................................................:::--==---::.................................................................................................................................................................................................................................................................................::::::::....................................................................................................................::::::::::::......................................:.::::::::--==+++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++====================================================================+*******************************************************************************************************************+++++++++++++++++++++++++++++++++++============================================================================-----------------------------------------------------------------------------------------------------------------------:::::::::::::::
++++++********************************++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#######################################################################################*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----:::::.............................................................................................................................................................................................................................................................::::...................:::::::::::::-----::::::::::::::::::...........::::::..............................::::--==++***###################*************################****+++========-----------=---------------====------------------------------------------------------------------------------------------------------------------------------::::..........................+@#:.....................+@@@%%%%%%%%%%@@@@@@@@@@@@#******#%#%%####@@@@#####%%#**+=:::::::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%@%%#%##########%%########################################################***##********###*+++++*##********+++++++++++++++======----------==------++++++*********************#*++++++++++++++++++=--=+++--=+++++=================+*-:::::::::::::-=====----::::::::::::::::===-=++++=-==-=====================-::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::      .:::::::::                 ........................                                ..                   .....................................................................................................................:.....................................................................................................................................................................................:::......                                    ................................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==++++==-::...................::--=+****++=-::.........::::::.................................................................................................................................::-==+++==-::......................................................::--====--:::................................................................................................................................................................................................................................................................................:::::::::...................................................................................................................:::::::::::..................................:::::::::::::---===++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++======================================================================+**********************************************************************************************************************+++++++++++++++++++++++++++++++++=============================================================================----------------------------------------------------------------------------------------------------------------------::::::::::::::
++++++********************************++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#######################################################################**##############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----:::::............................................................................................................................................................................................................................................................:::::..................::::::::::::::::::::::::::::::::::::::::.......:::::::..............................::::--==++****####################*********#################****+++=========----------====------------=====--------------------------------------------------------------------------------------------------::::------------------------:::::.........................:#*......................=%@@%%%%%%%%@@@@@@@@@@@@@@#******#%%%#####%@@%#####%#***=-::::::----=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###%%%%%##########%%########################################################****#********###*+++++*##********+++++++++++++++=====-----------==-----=++++++******************++**#####*+++++++++++++=--=+++--=+++++=================+*-::::::::::::::-=====---::::::::::::::::-==-=+++++==========================-:::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::       :::::::::.                ........................                                ..                   .....................................................................................................................:.....................................................................................................................................................................................:::......                                   .................................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==+++++=-::....................::-=+++*++==-::.........::::::.................................................................................................................................::-==++++=-::.....................................................:::-===+==-:::...............................................................................................................................................................................................................................................................................::::::::::....................................................................................................................:::::::::...........................:::::::::::::::::::----===++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++========================================================================+**********************************************************************************************************************++++++++++++++++++++++++++++++++++============================================================================----------------------------------------------------------------------------------------------------------------------::::::::::::::
++++++*******************************+++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********########################################################################***#############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----:::::............................................................................................................................................................................................................................................................:::::..................:::::::::::::-::::::::::::::::::::::::::::::::::::::::.............................::::::--==++****######################*****##################****+++========-----------====------------=====--------------------------------------------------------------------------------------------------::::::::--------------------::::::.........................:=......................-#@@%%%%%%%@@@@@@@@@@@@@@%*******#%%%######%%#####%%#**+=:::::::----=+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%##########%%#######################################################****#********###*+++++*##********+++++++++++++++=====-----------==------++++++*****************+++++***##*+++++++++++++=---+++--=+++++=================+*-::::::::::::::-======---::::::::::::::::-==-=++++=-=-======================-:::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.      :::::::::.                ........................                                 .                    ....................................................................................................................:.....................................................................................................................................................................................:::......                                   .................................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==+++++=--::...................::--=+++++=--:..........:::::..................................................................................................................................::--=++++=-::.....................................................::--==+++=--::...............................................................................................................................................................................................................................................................................::::::::::....................................................................................................................::::::::.......................:::::::::::::::::::::-----===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++===========================================================================************************************************************************************************************************++++++++++++++++++++++++++++++++++===========================================================================----------------------------------------------------------------------------------------------------------------------::::::::::::::
+++++++******************************+++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#########################################################################****#############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----:::::............................................................................................................................................................................................................................................................::::..................:::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................::::::---==++***############################################****++==========----------=====------------=====-----------------------------------------------------------------------------------------------::::::::::::::-----------------:::::::................................................:*@%@%%%%%%@@@@@@@@@@@@@@@#*******%%%#############%%#**+-:::::::----=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%#%###########%#######################################################****#********###*+++++*####******+++++++++++++++======----------==------++++++*****************+++++++**#*+++++++++++++=---+++--=+++++=================+*=:::::::::::::::-=====---::::::::::::::::--=-=+++++==========================-:::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::      .::::::::.                  ......................                                                      ...................................................................................................................:::.....................................................................................................................................................................................:.......                                   .................................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==+++++=--::....................::--==+==--::...........::::..................................................................................................................................::--=++++=--::....................................................::-==++++==-::...............................................................................................................................................................................................................................................................................:::::::::::....................................................................................................................:::::.......................::::::::::::::------------====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=============================================================================***********************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================-----------------------------------------------------------------------------------------------------------------------:::::::::::::
+++++++******************************+++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#########################################################################****############******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----:::::............................................................................................................................................................................................................................................................::::.................::::::::::::::--::::::::::::::::::::::::::::::::::::::::::..........................::::::::--==+++****#########################################****+++=========-----------=====------------=====-----------------------------------------------------------------------------------------------::::::::::::::::---------------:::::::.................................................+%@@%%%%%%%@@@@@@@@@@@@@@#*******#%%#############%#***+-:::::::----===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%#%#########%#######################################################***##********###*+++++*#*##*******++++++++++++++======----------==------++++++*****************++++++++***++++++++++++++---+++--=+++++=================+*=:::::::::::::::-======---::::::::::::::::-===+++++==========================-:::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::      .:::::::::                  ......................                                                      ...................................................................................................................:::.............................................................................................................................................................................................                                   .................................::--===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==+++++=--::....................:::--===--:::...........::::..................................................................................................................................::--=++++=--::...................................................:::-=+++++==-::...............................................................................................................................................................................................................................................................................:::::::::::.....................................................................................................................:::.......................:::::::::-------------=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++====================================++++========================================************************************************************************************************************************+++++++++++++++++++++++++++++++++++===========================================================================---------------------------------------------------------------------------------------------------------------------::::::::::::::
+++++++******************************+++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########################################################################*****############*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::::...........................................................................................................................................................................................................................................................:::::........:::...::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::....................:::::::::::--==++****########################################****+++=======-------------======-----------======-----------------------------------------------------------------------------------------------::::::::::::::::::::----------:::::::::................................................-%@@%%%%%%%%%%@@@@@@@@@@@@#****++#%%############%%#***=::::::::----===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###%%%%%#%#################################################################***##********####*++++*#**********++++++++++++++======----------==------++++++****************++++++++++++++++++++++++++---=++=-=+++++=================+*=::::::::::::::::-======--::::::::::::::::--===++++===========================::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.     .:::::::::                   .....................                                                      ...................................................................................................................:::.............................................................................................................................................................................................                                   .................................::--===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::--==+++++==-::.....................:::-----:::.............::...................................................................................................................................::--=++++=--::...................................................::--=++**++=-:::.............................................................................................................................................................................................................................................................................:::::::::::::.............................................................................................................................................::::::--------==============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++=====================================+****+======================================+**************************************************************************************************************************++++++++++++++++++++++++++++++++++===========================================================================--------------------------------------------------------------------------------------------------------------------::::::::::::::
+++++++++***************************++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########################################################################*****###########******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::::...........................................................................................................................................................................................................................................................:::::.......:::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::..............:::::::::::::--==++****######################################****+++=====----------------======-----------======-----------------------------------------------------------------------------------------------:::::::::::::::::::::--------:::::::::::................................................#@@@%%%%%%%%%%%@@@@@@@@@@@#**++=+#%%###########%%#**+-::::::::----===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*#%%%%#%##################################################################**##*********###*++++**##********+++++++++++++++=====----------==------=+++++****************++++++++++++++++++++++++++=--=++=-=+++++=================+*=::::::::::::::::-======--:::::::::::::::::-===+++++==========================-:::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.      :::::::::                   .....................                                                      ...................................................................................................................::::............................................................................................................................................................................................                                   .................................::--===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::--==+++++==-::......................::::--:::...................................................................................................................................................:::-=++++==-::...................................................::-==+***++=--::.............................................................................................................................................................................................................................................................................:::::::::::::............................................................................................................................................::::-----============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++=====================================+******+======================================+**************************************************************************************************************************+++++++++++++++++++++++++++++++++++==========================================================================--------------------------------------------------------------------------------------------------------------------::::::::::::::
++++++++++**************************++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########################################################################******###########******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----::::::...........................................................................................................................................................................................................................................................:::::.......::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::.......:::::::::::::::---==++****####################################****+++=====----------------=======----------=======-----------------------------------------------------------------------------------------------:::::::::::::::::::::::----:::::::::::::................................................=%@@%%%%%%%%%%%%@@@@@@@@@@@%*+==+*%%%##########%#***+-::::::::----===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*#%%%%#%##################################################################**##*********###*+++++*###*******+++++++++++++++=====----------==------=+++++***************+++++++++++++++++++++++++++=---++=-++++++=================+*=:::::::::::::::::-======--::::::::::::::::-====++++===========================::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::      .::::::::.                   ....................                                                      ...................................................................................................................::::............................................................................................................................................................................................                                   ................................:::--===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::--=++++++==-::.......................::::::::....................................................................................................................................................::-==+++==-::...................................................::-=++****+=--::.............................................................................................................................................................................................................................................................................:::::--::::::............................................................................................................................................:::----========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++=====================================++*******+======================================+**************************************************************************************************************************+++++++++++++++++++++++++++++++++++===========================================================================--------------------------------------------------------------------------------------------------------------------:::::::::::::
+++++++++++************************+++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################******##########*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----::::::...........................................................................................................................................................................................................................................................:::::.......::::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=+++****##################################****+++=====----------------========----------=======-----------------------------------------------------------------------------------------------:::::::::::::::::::::::::-::::::::::::::................................................:%@@@%%%%%%%%%%%%%%@@@@@@@@@%*+==+*%%%########%%#***=:::::::::----===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%#################################################################**##*********###*+++++*###*******+++++++++++++++=====-----------=------=+++++**************++++++++++++++++++++++++++++=---++==++++++=================+*=:::::::::::::::::-======--:::::::::::::::::-===+++++==========================-:::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.     .::::::::.                   ....................                                                      ..................................................................................................................:::::............................................................................................................................................................................................                                   ................................:::--===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::--=++++++==-::.........................:::::.....................................................................................................................................................::-==+++==-::..................................................::--=++****+=--::.............................................................................................................................................................................................................................................................................:::::---::::::..........................................................................................................................................:::---====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=======================================+*********+======================================***************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================----------------------------------------------------------------------------------------------------------------------:::::::::::
++++++++++++++********************++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###########################################################################******##########******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----::::::..........................................................................................................................................................................................................................................................:::::........::::::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++****#################################****+++=====----------------=========---------=======------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::.................................................*@@@%%%%%%%%%%%%%%%%%%%@@@@@@#++=+*%%%#######%#***+-:::::::::----====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*#%%%%%##################################################################***#*********###*+++++*###*******+++++++++++++++=====-----------=-------++++***************++++++++++++++++++++++++++++=---+++=++++++=================+*=::::::::::::::::::-======--::::::::::::::::--===++++===========================-:::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.     .::::::::.                   ....................                                                     ...................................................................................................................::::::..........................................................................................................................................................................................                                    ................................::---===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++==-::.........................:::::.....................................................................................................................................................::-==++++=-:::.................................................::--=+*****+=--::.............................................................................................................................................................................................................................................................................:::::---::::::..........................................................................................................................................:::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++========================================+**********+======================================****************************************************************************************************************************++++++++++++++++++++++++++++++++++++=========================================================================----------------------------------------------------------------------------------------------------------------------:::::::::::
+++++++++++++++*******************++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################*******##########******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----::::::..........................................................................................................................................................................................................................................................:::::.......:::::::::::::::::::::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++****################################***+++=====----------------===========-------========------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::.................................................=@@%%%%%%%%%%%%%%%%%%%%%%@@@@@%++=+#%%%#####%%#***+-:::::::::----=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*##%%%%#%################################################################***#*********####*++++*###*******+++++++++++++++======----------=-------++++**************++++++++++++++++++++++++++++++---=++=++++++=================+*=::::::::::::::::::--=====--:::::::::::::::::-===++++===========================-:::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::      :::::::::                    ...................                                                     ...................................................................................................................::::::..........................................................................................................................................................................................                                    .................... ...........::---==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++==-::..........................::::.....................................................................................................................................................::-==++++=-:::.................................................::--=+*****+=--::.............................................................................................................................................................................................................................................................................:::::::--:::::..........................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=======================================++************+======================================****************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================---------------------------------------------------------------------------------------------------------------------:::::::::::
++++++++++++++++****************++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################*******#########*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----::::::..........................................................................................................................................................................................................................................................::::::......::::::::----::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++****##############################****+++====-------------================----==========---------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::.................................................:%@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@#+=+#%@%####%#***+=::::::::::----====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#**#%%%#%%#################################################################**##*********###*++++*###*******++++++++++++++++======--------==-------=+++*************+++++++++++++++++++++++++++++++---=+++++++++=================+*=:::::::::::::::::::-======--::::::::::::::::-===+++++===========================:::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::      :::::::::                     ..................                         ............ .             .. .................................................................................................................::::::..........................................................................................................................................................................................                                      ..............................::---==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++==-::...........................::......................................................................................................................................................::-==++++=--::.................................................::-==+****++=-:::.............................................................................................................................................................................................................................................................................::::::---:::::..........................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++========================================+**************+=====================================+*****************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================-------------------------------------------------------------------------------------------------------------------::::::::::::
++++++++++++++++****************++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################*******########********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----::::::..........................................................................................................................................................................................................................................................:::::.......:::::::-----::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++***##############################****++=====------------===============================----------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::..................................................#@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%*+*#%@###%%#***+-::::::::::----=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#*##%%%%%%#####################################################################*********###*++++*###********+++++++++++++++=======-------==-------=+++*************+++++++++++++++++++++++++++++++=--=+++++++++=================+*=::::::::::::::::::::-=====--:::::::::::::::::-===++++===========================-:::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.     :::::::::.                    ..................                      .................             .. .................................................................................................................::::::..........................................................................................................................................................................................                                      ..............................::---==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++==-::...........................::......................................................................................................................................................::-==++++=--::.................................................::-==++***++=-:::.............................................................................................................................................................................................................................................................................::::::---:::::..........................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++========================================+****************+=====================================+******************************************************************************************************************************++++++++++++++++++++++++++++++++++++=========================================================================---------------------------------------------------------------------------------------------------------------------::::::::::
++++++++++++++++*************+++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################*******########********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----::::::..........................................................................................................................................................................................................................................................:::::.......::::::------::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++****#############################***+++====------------================================-----------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::..................................................=@@@%%%%%%%%%%%%%%%%%%%%%%%%#%@%#####%%%#%%#***+=-::::::::::----=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%#%#####################################################################*********###*++++*###********+++++++++++++++========------==--------=++***********+++++++++++++++++++++++++++++++++=--=+++++++++=================+*=:::::::::::::::::::::-=====-:::::::::::::::::-===+++++==========================-:::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::     .::::::::.                    ..................                     ...................      .   ......................................................................................................................::::::..........................................................................................................................................................................................                                      ..............................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..............................................................::-==+++++++=--::..........................::......................................................................................................................................................::--=++++=--::.................................................::--=++**++==-::...............................................................................................................................................................................................................................................................................:::::---:::::..........................................................................................................................................:::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++========================================++*****************+=====================================+*******************************************************************************************************************************+++++++++++++++++++++++++++++++++++==========================================================================----------------------------------------------------------------------------------------------------------------------::::::::
++++++++++++++++**********++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################*******#######*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----::::::..........................................................................................................................................................................................................................................................:::::......::::::-------::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++***#############################***+++====------------================================--------------------------===--------------------------------------------------------------------------:--------::::::::::::::::::::::::..................................................:%@%%%%%%%%%%%%%%%%%%%%%%%%%########%%@%%%#****+--::::::::::----=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#**#%%%#%#####################################################################*********####++++*###********+++++++++++++++========------==--------=++***********+++++++++++++++++++++++++++++++++=---+++++++++=================+*=:::::::::::::::::::::-=====--:::::::::::::::::-===++++===========================:::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::     .::::::::.                    ..................                    ....................      ..........................................................................................................................::::::..........................................................................................................................................................................................                                      ..............................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..............................................................::-==+++++++=--::..........................:.......................................................................................................................................................::--=++++=--::.................................................::--==++++==-:::...............................................................................................................................................................................................................................................................................:::::---:::::..........................................................................................................................................::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=========================================++*******************+=====================================+*******************************************************************************************************************************+++++++++++++++++++++++++++++++++++===========================================================================-----------------------------------------------------------------------------------------------------------------------------
++++++++++++++++********++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########################################################################********#######*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------::::::.........................................................................................................................................................................................................................................................::::::......::::::-------::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++***############################***+++=====----------=================================------------------------======----------------------------------------------------------------------------------::--::::::::::::::::::::...................................................*@%%%%%%%%%%%%%%%%%%%%%%%%@%#######%%@%%%***++=--::::::::::----=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#**##%%%%%#####################################################################********####*+++*###********+++++++++++++++========-------=------=-=++**********++++++++++++++++++++++++++++++++++=---+++++++++=================+*=::::::::::::::::::::::-=====-::::::::::::::::::-==++++===========================-:::::::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    .:::::::::                    ..................                  ......................      ...........................................................................................................................:::::..........................................................................................................................................................................................                                   .................................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..............................................................::-==+++++++=--::..................................................................................................................................................................................:::-=++++==-::.................................................:::-===++==--:::...............................................................................................................................................................................................................................................................................:::::---:::::..........................................................................................................................................::::---========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=========================================+*********************======================================*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++===========================================================================----------------------------------------------------------------------------------------------------------------------------
++++++++++++++++++****++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#####################################################*****##############********######**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------:::::...........................................................................................................................................................................................................................................................::::......::::::--------::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=++***############################****++=====---------==================================------------------------======--------------------------------------------------------------------------------------::::::::::::::::::::...................................................=@@%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%#**+=----::::::::::---====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#*#*#%%%%%#####################################################################*********###*+++*###********+++++++++++++++========-------=------=--=+*********++++++++++++++++++++++++++++++++++++=--=++++++++=================+*-:::::::::::::::::::::::-====-::::::::::::::::::-===++++==========================-:::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::     :::::::::                     .................                 .........:::............     ...........................................................................................................................:::::..........................................................................................................................................................................................                                  ..................................::---=============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................:::-==+++++++=--::..................................................................................................................................................................................:::-=++++==-::..................................................::---====--:::................................................................................................................................................................................................................................................................................::::::-::::::..........................................................................................................................................:::::------======+++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=========================================+***********************======================================*********************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================------------------------------------------------------------------------------------------------------------==--------------
++++++++++++++++++**+++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****####################################################*******############*********######**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------:::::...........................................................................................................................................................................................................................................................:::.......:::::---------::::::::::--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++***############################***+++=====--------===================================---------------------==========-------------------------------------------------------------------------------------:::::::::::::::::::...................................................:%@@%%%%%%%%%%%%%%%%%%%%%%%%%###*#####%#**+=--:-:::::::::::---===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*##%%%%#####################################################################*********###*+++*###********+++++++++++++++========-------=------==-=+********+++++++++++++++++++++++++++++++++++++=--=++++++++=================+*-:::::::::::::::::::::::--====-::::::::::::::::::-==++++===========================::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::     .::::::::.                    .................                 ......:::::::::.........       ...............................................................................................................  ........:::::..........................................................................................................................................................................................                                  ..................................::--==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................:::-=++++++++=--::..................................................................................................................................................................................:::-==+++==-::..................................................:::-------:::..................................................................................................................................................................................................................................................................................:::::-::::::...........................................................................................................................................::::::-------====++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=========================================++************************=====================================+**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++===========================================================================------------------------------------------------------------------------------------------------------=====================
+++++++++++++++++++*+++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##################################################********############*********######**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------:::::............................................................................................................................................................................................................................................................:.......::::::---------::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++**############################****+++====--------====================================-------------------===========-------------------------------------------------------------------------------------:::::::::::::::::::....................................................#@@%%%%%%%%%%%%%%%%%%%%%%%%@##**######**+=-----::::::::::---==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#%%%%######################################################################********###*++++###********+++++++++++++++========-------=------==--+********+++++++++++++++++++++++++++++++++++++=--=++++++++==================*-::::::::::::::::::::::::-====-::::::::::::::::::-==++++===========================-:::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    .::::::::.                     ................                ......:::::::::::........       .............................................................................................................      ......:::::..........................................................................................................................................................................................                                  ..................................::--==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=++++++++=--::..................................................................................................................................................................................:::-==++++=-:::..................................................::::---::::...................................................................................................................................................................................................................................................................................::::::::::::............................................................................................................................................::::::::::----===+++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++=========================================+**************************=====================================+**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++======================================================-====================--------------------------------------------------------------------------------------------------======================+++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##################################################*********##########**********#####***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------::::::..................................................................................................................................................................................................................................................................::::::----------:::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::::--=++***############################****+++====-------==============================================--------==============------------------------------------------------------------------------------------::::::::::::::::::....................................................+@@@%%%%%%%%%%%%%%%%%%%%%%%@%########**+-::---::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#**##%%%%#####################################################################*********###**+++*###********+++++++++++++++===-===-------=------=+--+*******++++++++++++++++++++++++++++++++++++++=--=+++++++++++===============*-:::::::::::::::::::::::::-====-::::::::::::::::::-==++++==========================-::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    .::::::::.                     ................               ......:::::--::::::........       ...........................................................................................................         ....::::...........................................................................................................................................................................................                                ....................................::--==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=++++++++=--::...................................................................................................................................................................................::-==++++=-:::...................................................:::::::::....................................................................................................................................................................................................................................................................................:::::::::::..............................................................................................................................................:::::::::::--====++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++==+======================================+****************************=====================================+***********************************************************************************************************************************+++++++++++++++++++++++++++++++++++=====================================================-====================----------------------------------------------------------------------------------------------==========+++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##################################################**********#####***************###************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------:::::...................................................................................................................................................................................................................................................................:::::-----------:::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::--==++**#############################****++=====------=====================================================================-----------------------------------------------------------------------------------::::::::::::::::::....................................................-%@%%%%%%%%%%%%%%%%%%%%%%%%@%#######*+=-:--:-::::::::----==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##%%%######################################################################********####*+++*###********+++++++++++++++===-===-------=------=+=-=*******++++++++++++++++++++++++++++++++++++++=--=+++++*+++++===============*-:::::::::::::::::::::::::--===-::::::::::::::::::-==++++==========================-::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    .::::::::.                      ...............               .....::::------::::.........      ..........................................................................................................          ....::::...........................................................................................................................................................................................                                ................    ................::--==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=++++++++=--::...................................................................................................................................................................................::--=++++=--::....................................................::::::......................................................................................................................................................................................................................................................................................:::::::::::................................................................................................................................................:::::::::---===++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++==+======================================++*****************************=====================================************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================-------------------------------------------------------------------------------------------=========++++++++++*++++++*****
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#################################################**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------:::::..................................................................................................................................................................................................................................................................::::::-----------:::::::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......::::--=++**##############################***+++====------=======================================================================--------------------------------------------------------------------------------:::::::::::::::::::.....................................................#@@%%%%%%%%%%%%%%%%%%%%%%%%@%#%##**+--::::--::::----=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##%%%######################################################################*********###*+++*##*********+++++++++++++++===-===-------=------=+=-=******+++++++++++++++++++++++++++++++++++++++==-=++++**++++++==============+-::::::::::::::::::::::::::-===-:::::::::::::::::::-==++++==========================::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    :::::::::                      ...............              .....::::--------::::........      ..........................................................................................................           ....:::...........................................................................................................................................................................................                                ..............        ..............::--==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=++++++++=--::...................................................................................................................................................................................::--=++++=--::................................................................................................................................................................................................................................................................................................................................................:::::::::::..................................................................................................................................................:.::::::--==+++======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++===++===================================++*******************************=====================================*************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================---------------------------------------------------------------------------------------========+++++++++*****************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###############################################***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------:::::..................................................................................................................................................................................................................................................................:::::-----------::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........:::--=++***##############################***+++====-----=========================================================================------------------------------------------------------------------------------:::::::::::::::::::.....................................................+@@%%%%%@%%%%%%%%%%%%%%%%%%@%%##*+--::--::::-----====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##%%%#####################################################################*********###*+++*##*#*******+++++++++++++++===-===--------------=++--******+++++++++++++++++++++++++++++++++++++++==-=+++***++++++=============++:::::::::::::::::::::::::::-====-::::::::::::::::::-==++++==========================:::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    :::::::::                       ..............             .....::::----------::::.......     ..........................................................................................................            ....:::...........................................................................................................................................................................................                                ..............        ..............:---==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=++++++++=--::...................................................................................................................................................................................::--=++++=--::.................................................................................................................................................................................................................................................................................................................................................::::::::::.....................................................................................................................................................:::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++==+++===+================================++********************************+====================================+*************************************************************************************************************************************++++++++++++++++++++++++++++++++++++===========================================================================----------------------------------------------------------------------------------==========+++++++*********************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###############################################**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------:::::.................................................................................................................................................................................................................................................................:::::------------::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........:::--==+***###############################***++====-----==========================================================================-----------------------------------------------------------------------------:::::::::::::::::::.....................................................-@@%%%%%@%%%%%%%%%%%%%%%%%%%%%#*=-::::::-----====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*++++++++++++++++++++++++++++++++++++++++++++++++++++++*#****#%%%######################################################################********###*+++*##*#*******+++++++++++++++===-===--------------=++=-+#***+++++++++++++++++++++++++++++++++++++++++=-=++****++++++=============++:::::::::::::::::::::::::::--===-:::::::::::::::::::-=++++==========================-::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.   .::::::::.                      ..............             .....:::------------:::.......     ..........................................................................................................             ....:..............................................................................................................................................................................................                              ..............        ..............:---==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=++++++++==-::...................................................................................................................................................................................::--=++++=--::.................................................................................................................................................................................................................................................................................................................................................::::::::::......................................................................................................................................................::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=++++++++=================================+**********************************+====================================+**************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================-------------------------------------------------------------------------------==========++++++++***************########
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********##############################################**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------:::::................................................................................................................................................................................................................................................................::::::------------::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::::-==++**###############################***+++====----===========================================================================---------------------------------------------------------------------------::::::::::::::::::::.....................................................:%@%%%%%@%%%%%%%%%%%%%%%%%%%%#*=:::-:----====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%*+++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%######################################################################********###**++*##*#********++++++++++++++===-===--------------=++=-+#***+++++++++++++++++++++++++++++++++++++++++=-=++***+++++++=============*+:::::::::::::::::::::::::::--====-::::::::::::::::::-==++++=========================-:::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.  .::::::::.                       .............            .....:::-------------:::.......    ...........................................................................................................             ....................................................................................................................................................................................................                             ..............        .............::---==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=++++++++==-::...................................................................................................................................................................................::--=++++=--::.................................................................................................................................................................................................................................................................................................................................................::::::::::.......................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++===++===============================++***********************************+====================================+**************************************************************************************************************************************++++++++++++++++++++++++++++++++++++===========================================================================---------------------------------------------------------------------------==========++++++++************##############
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************############################################*********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------:::::..............................................................................................................................................................................................................................................................:::::::------------:::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::--=++**################################***++====-----===========================================================================------------------------------------=====---------------------------------::::::::::::::::::::......................................................+@@%%%%@@%%%%%%%%%%%%%%%%%%#*+------====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###%#######################################################################*******####*++*##*#********+++++++++++++++==-===--------------=++=-=#***+++++++++++++++++++++++++++++++++++++++++===++**++++++++=============*+::::::::::::::::::::::::::::--===-:::::::::::::::::::-=++++=========================-:::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.  .::::::::.                       ..............          .....:::--------------::::......   ...........................................................................................................              ....................................................................................................................................................................................................                             ..............        .............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::--=++++++++==-::...................................................................................................................................................................................::--=++++=--::.................................................................................................................................................................................................................................................................................................................................................:::::::::.......................................................................................................................................................::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++=+++++===+============================+*************************************+====================================+**************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++===========================================================================--==-----------------------------------------------------------------===========++++++++++**************##############
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#########################################**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------:::::.............................................................................................................................................................................................................................................................:::::::-------------:::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::--=++**#################################**+++====----===========================================================================------------------------------------======--------------------------------::::::::::::::::::::......................................................-%@%%%%@@%%%%%%%%%%%%%%%%%#**+========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%######################################################################********###*++*##*#********+++++++++++++++==-====-------------=+++--*#**+++++++++++++++++++++++++++++++++++++++++===++**++++++++=============*+::::::::::::::::::::::::::::---==-:::::::::::::::::::-==+++=========================-:::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  .:::::::::                       ..............          .....:::---------------:::.......  ...........................................................................................................               ...................................................................................................................................................................................................                             ...............      ..............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++++==-::...................................................................................................................................................................................:::-=++++=--::.................................................................................................................................................................................................................................................................................................................................................:::::::::........................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++================================+***************************************+====================================****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++============================================================================-==-----------------------------------------------------------==============++++++++++*****************##############
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************####################************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::..........................................................................................::::..............................................................................................................................................................::::::::-------------::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::--=++**##################################**++====-----==========================================================================-----------------------------------========------------------------------:::::::::::::::::::::.......................................................#@@%%%@@@%%%%%%%%%%%%%%%****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#****###%#%####################################################################********###*++*##*#*********++++++++++++++==-===--------------=+++=-+#***+++++++++++++++++++++++++++++++++++++++++==++**+++++++=============+*+:::::::::::::::::::::::::::::--===-:::::::::::::::::::-=+++++=======================-::::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.  :::::::::                        ..............        .....:::----------------:::......  ............................................................................................................               ...................................................................................................................................................................................................                   .         ...........          ..............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++++==-::...................................................................................................................................................................................:::-==+++==-::..................................................................................................................................................................................................................................................................................................................................................::::::::........................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++==++========================++****************************************+===================================+****************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++===========================================================================------------------------------------------------=====================++++++++++++**********************##**********
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::........................................................................................::::::::...........................................................................................................................................................::::::::--------------::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::-==+***##################################***++===------==========================================================================----------------------------------=========----------------------------:::::::::::::::::::::........................................................=@@%%%%@@@%%%%%%%%%%%%%#****++++++++++++++++++++++++++++++++++++++++****++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#****###%######################################################################********###**+*####*********++++++++++++++======--------------=+++=:=#***+++++++++++++++++++++++++++++++++++++++++==+**++++++++=============+*+:::::::::::::::::::::::::::::--===-:::::::::::::::::::-==+++========================-::::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.  :::::::::.                       ................     .....::::----------------:::......  ...........................................................................................................                ...................................................................................................................................................................................................                              ..........          ..............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++++==-::....................................................................................................................................................................................::-==+++==-::..................................................................................................................................................................................................................................................................................................................................................::::::::........................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++==========================++******************************************+===================================+****************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++============================================================================--==---------------=============================================++++++++++++**************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++**************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::.......................................................................................::::::::::.........................................................................................................................................................::::::::---------------::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::-==+***###################################**++====--------=======================================================================----------------------------------=========----------------------------:::::::::::::::::::::........................................................:%@@%%%@@@%%%%%%%%%%%%%#*****++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#****##%#%######################################################################*******###**+**####*********+++++++++++++=-=====-------------=++++--#***+++++++++++++++++++++++++++++++++++++++++==+**+++++================+*=::::::::::::::::::::::::::::::--===-:::::::::::::::::::-==+++=======================-:::::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::.  .::::::::.                         ...............   ......:::-----------------::.......  ...........................................................................................................                ...................................................................................................................................................................................................                                ........         ...............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++++==-::....................................................................................................................................................................................::-==++++=-::..................................................................................................................................................................................................................................................................................................................................................::::::::........................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++==================+*********************************************+===================================+*****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++=====================================================================================================================================+++++++++++++********************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::......................................................................................:::::--:::::........................................................................................................................................................::::::-----------------::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........::--==+***###################################**+++===----------======================================================================---------------------------------==========--------------------------::::::::::::::::::::::.........................................................*@@%%%@@@@%%%%%%%%%%%%%#*****+++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#*****###%######################################################################*******####*++*####*********+++++++++++++=-=====--------=----=++++=-****+++++++++++++++++++++++++++++++++++++++++==++*++++++===============**=::::::::::::::::::::::::::::::--===-:::::::::::::::::::-==++++======================-:::::::::::::----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::  .::::::::.                          ......................:::-----------------:::.......  ...........................................................................................................                 ..................................................................................................................................................................................................                                 ......          ...............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++++==-::....................................................................................................................................................................................::-==++++=--:...................................................................................................................................................................................................................................................................................................................................................:::::::........................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++====================++***********************************************+===================================+******************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++============================================================================================================================+++++++++++++++**************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::......................................................................................:::------:::........................................................................................................................................................:::::------------------::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::--=++**####################################***++====-----------=====================================================================--------------------------------==========------------------------::::::::::::::::::::::::.........................................................-%@%%%%@@@%%%%%%%%%%%%%%#*****+++++++++++++++++++++++*******#*****++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###%%#%####################################################################******####*++*#####********+++++++++++++=-=====--------==---=++++=-****+++++++++++++++++++++++++++++++++++++++++==++*+++++++==============**=:::::::::::::::::::::::::::::::--==--:::::::::::::::::::-==+++======================-::::::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::.                           ....................::::-----------------:::.......  ...........................................................................................................                 ..................................................................................................................................................................................................                                 .....           ...............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................:::-==++++++++==--:....................................................................................................................................................................................::-==++++=--:...................................................................................................................................................................................................................................................................................................................................................::::::.........................................................................................................................................................::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++==+++===+====+++**************************************************+===================================+*******************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++================================================================================================================+++++++++++++++++++++*******************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++==========================================++++++++++++++++++++++++************************+++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::.....................................................................................:::-------:::.......................................................................................................................................................::::::-----------------:::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::-==++**#####################################**+++===-------------===---------============================================================---------------------------==========----------------------::::::::::::::::::::::::::..........................................................#@%%%%@@@%%%%%%%%%%%%%%%#*****+++++++++++++++++++++++********++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###%%%%####################################################################******####*++*#####********+++++++++++++=-=====--------==---=+++++-=#**+++++++++++++++++++++++++++++++++++++++++++++*+++++===============+**-::::::::::::::::::::::::::::::::-===-:::::::::::::::::::-===++======================-::::::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::.  :::::::::                            ...................:::------------------:::.......  ...........................................................................................................                 ..................................................................................................................................................................................................                                   .             ...............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................:::-==+++++++++=--:....................................................................................................................................................................................::--=++++=--:...................................................................................................................................................................................................................................................................................................................................................::::::.........................................................................................................................................................::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++==++=========+++******************************************************+==================================+*********************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++=======================================================================================================++++++++++++++++++++++**************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================++++++++++********************+++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------::::::....................................................................................:::---------:::......................................................................................................................................................:::::------------------:::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........:::-==+***#####################################***++====---------------------------==============================================================---------------------===========---------------------:::::::::::::::::::::::::::..........................................................+@%%%%%@@%%%%%%%%%%%%%%%%#*****+++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*****##%%%%#####################################################################******###**+*#####*********++++++++++++=-=====--------==---=+++++-=***+++++++++++++++++++++++++++++++++++++++++++++*+++++=+=============+*+-::::::::::::::::::::::::::::::::--==-::::::::::::::::::::-===++=====================--:::::::::::::-----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::  :::::::::.                            .................:::-------------------:::.......  ...........................................................................................................                 ..................................................................................................................................................................................................                                                 ...............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................:::-==+++++++++=--::...................................................................................................................................................................................::--=++++=--:....................................................................................................................................................................................................................................................................................................................................................::::..........................................................................................................................................................::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++**********************************************************+==================================+*********************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++===============================================================================================++++++++++++++++++++++*********************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================++++++******************++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------::::::....................................................................................:::---===---:::.....................................................................................................................................................::::::------------------:::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::--=++**#######################################**+++===-----------------------------================================================================-----------------===========--------------------::::::::::::::::::::::::::::..........................................................-@@%%%%@@@%%%%%%%%%%%%%%%%#*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#*****##%%%%#####################################################################******###**+*#####*********++++++++++++=======--------==---=+++++--***+++++++++++++++++++++++++++++++++++++++++++++*+++++=+=============+*+::::::::::::::::::::::::::::::::-:-===-:::::::::::::::::::-===++=====================--::::::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::  :::::::::.                            ................:::-------------------:::........  ...........................................................................................................                 ..................................................................................................................................................................................................                                                 ...............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................:::-==++++++++==--::....................................................................................................................................................................................:--=++++=--:....................................................................................................................................................................................................................................................................................................................................................::::..........................................................................................................................................................::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++*********************************************************************+==================================+**********************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++=========================================================================================++++++++++++++++++++****************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================+++++**************++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------::::::....................................................................................:::--=====--:::.....................................................................................................................................................:::::-------------------:::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......:::--=++**#######################################**+++===-------------------------------======================------------===============================------------=============-----------------------::::::::::::::::::::::::............................................................%@%%%%%@%@%%%%%%%%%%%%%%%%#******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%####################################################################******###**+*###*#*********++++++++++++=======-------===---=++++*=-***++++++++++++++++++++++++++++++++++++++++++++***++++++++===========+*+:::::::::::::::::::::::::::::::::---==-:::::::::::::::::::--===+=====================--::::::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::.                               ............::::-------------------:::.......  .......... .................................................................................................                 ..................................................................................................................................................................................................                                                 ...............::---============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................:::-==++++++++==--::....................................................................................................................................................................................:--=++++=--::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++************************************************************************===================================+*********************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++===================================================================================+++++++++++++++++++++*********************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================+++++++********+++++++++++++**********+++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------::::::...................................................................................:::---=====--:::.....................................................................................................................................................:::::-------------------:::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-==+**##############***#######################***++====-------------------------------===================---------------------================================--===============-----------------------::::::::::::::::::::::::............................................................+@%%%%%@@%%%%%%%%%%%%%%%%%%##****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%#####################################################################*****###**+*#####*********++++++++++++========------===---=++++*=-+**++++++++++++++++++++++++++++++++++++++++++++***++++++++===========**+:::::::::::::::::::::::::::::::::::-==--:::::::::::::::::::-===+======================--::::::::::::::----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::.                               ............:::--------------------::........ .. ...........................................................................................................  .              .................................................................................................................................................................................................                                                 ...............::---============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................:::-==++++++++==--::....................................................................................................................................................................................:--=++++=--::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++**************************************************************************+==================================+**********************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++==============================================================================++++++++++++++++++++***************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================++++++++++++++++++++++++++**********++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------::::::...................................................................................:::--=====---:::.....................................................................................................................................................:::::-------------------:::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::--=++**############*******#####################***+++===---------------------------------==============-----------------------------============================================------------------------:::::::::::::::::::::::............................................................-@%%%%%%@%@%%%%%%%%%%%%%%%%%##*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%%####################################################################*****####***#####*********++++++++++++========------===--=+++++*+:=**++++++++++++++++++++++++++++++++++++++++++++**+++++++++==========+**+:::::::::::::::::::::::::::::::::::--==-:::::::::::::::::::-====+=====================--::::::::::::::----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::: .:::::::::                               ...........::::-------------------:::...........................................................................................................................             .................................................................................................................................................................................................                                                 ...............::--=============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................::--==++++++++==--::....................................................................................................................................................................................::-==+++=--::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==================================*************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++========================================================================++++++++++++++++++++*******************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================++++++++++++++++++++++++**********+++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------::::::...................................................................................::---=====---:::.....................................................................................................................................................::::-------------------::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::::--=++**############********#####################***++====----------------------------------===========---------------------------------=========================================------------------------:::::::::::::::::::::::.............................................................%%%%%%%@@@%%%%%%%%%%%%%%%%%%##****++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%%%%####################################################################*****####***#####**********+++++++++++==+=====------===--=+++++*+:=**++++++++++++++++++++++++++++++++++++++++++++**++++++++++=========+**=::::::::::::::::::::::::::::::::::::-==-::::::::::::::::::::-===+=====================--:::::::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::  :::::::::                               ..........::::--------------------:::...........................................................................................................................             .................................................................................................................................................................................................                                                 ...............::--=============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................::--=+++++++++==--::....................................................................................................................................................................................::-==+++=--::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==================================**************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++=====================================================================+++++++++++++++++++***********************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========++=====================================================-======================++++++++++++++++++*********+++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------::::::..................................................................................:::--======--:::.....................................................................................................................................................:::::-------------------::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+**############**********####################***+++===---------------------:-------------=========--------------------------------------=====================================------------------------:::::::::::::::::::::::.............................................................%@%%%%%%@@@%%%%%%%%%%%%%%%@%####****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%#####################################################################****####***######*********++++++++++===+=====------===--=+++++**--**++++++++++++++++++++++++++++++++++++++++++++**+++++++++++========+**=:::::::::::::::::::::::::::::::::::::-=--:::::::::::::::::::-===+==========+===========-:::::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::. :::::::::.                               .........:::---------------------:::...........................................................................................................................             .................................................................................................................................................................................................                                                 ...............::--=============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................::--=+++++++++==--::....................................................................................................................................................................................::--=+++=--::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=================================+***************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++===================================================================++++++++++++++++++**************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++++++=================================================================================++++++++*********+++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------::::::..................................................................................:::--======--:::.........................................................................................................................::..........................:::::-------------------::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++**###########****++++****####################**+++===------------------:::::-------------=======------------------------------------------==================================------------------------:::::::::::::::::::::::.............................................................*@%%%%%%@@@%%%%%%%%%%%%%%%@%#####**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%#####################################################################****#####**######*********++++++++++==++=====------===--=++++++*--**++++++++++++++++++++++++++++++++++++++++++++**++++++++++++=======+**=:::::::::::::::::::::::::::::::::::::--=-::::::::::::::::::::==========================--::::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::.                               ........::::--------------------:::............................................................................................................................             .................................................................................................................................................................................................                                                 ...............::--=============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................::--=+++++++++==--::....................................................................................................................................................................................::--=+++==-::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=================================+****************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++================================================================++++++++++++++++******************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============++++++============================================================+++++********+++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------::::::..................................................................................::---=====---:::.......................................................................................................................:::::.........................:::::-------------------::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==+***###########***+++++++***###################**+++===-----------------::::::--------------=====-----------------------------------------------===============================-------------------------::::::::::::::::::::::............................................................-@%%%%%%%@@@%%%%%%%%%%%%%%@%######****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%#####################################################################****#####**######*********++++++++++==+======-----====--=++++++*=-+*++++++++++++++++++++++++++++++++++++++++++++**++++++++++++======+***-::::::::::::::::::::::::::::::::::::::-=--:::::::::::::::::::-==========================-:::::::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::.                               ........:::---------------------:::............................................................................................................................             .................................................................................................................................................................................................                                                 ...............::--============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=+++++++++==--::....................................................................................................................................................................................::--=+++==-::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::...................:::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=================================+****************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++=============================================================++++++++++++++++********************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++============================================================+++********+++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------::::::.................................................................................:::---=====---:::.....................................................................................................................::::::::........................:::::-------------------::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++**###########***+++==++++****##################**++===-----------------::::::-::-----------=====-------------------------------------------------==============================------------------------::::::::::::::::::::::............................................................:%%%%%%%%@@@%%%%%%%%%%%%%%@%%######****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%##***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#******#%%%%######################################################################***#####***#####*********++++++++++==+=+====-----===---+++++++*=:+*++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++=====+***-::::::::::::::::::::::::::::::::::::::--=-:::::::::::::::::::-==========================-:::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..::::::::.                               .......::::---------------------:::.............................................................................................................................            .................................................................................................................................................................................................                                                 ...............:---============================================================================================================================-----------------------------------::::-----------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::--=+++++++++==--::....................................................................................................................................................................................::--=+++==-::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::.................:::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=================================+*****************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++============================================================+++++++++++++++**********************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================+++*******+++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::..................................................................................:::--======--:::......................................................................................................................::::::::.......................::::::-------------------:::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=+***##########***+++=====+++*****################**+++==----------------::::::::::------------====---------------------------------------------------=======----==================------------------------::::::::::::::::::::..............................................................%%%%%%%%@@%@%%%%%%%%%%%%%@%%##***###***++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%#####################################################################***######**#####**********++++++++===+++=====----===---=++++++#+:=*+++++++++++++++++++++++++++++++++++++++++++***++++++++++++++====+***-::::::::::::::::::::::::::::::::::::::--=-::::::::::::::::::::-=========================--:::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. :::::::::                               .......:::---------------------::::.............................................................................................................................           ..................................................................................................................................................................................................                                                 ..............::---============================================================================================================================------------------------::::----:::::::::---------------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==++++++++==--::....................................................................................................................................................................................::--=+++==-::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=================================******************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++===========================================================+++++++++++++************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++==========================================================+++*******+++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::..................................................................................:::--======--:::.....................................................................................................................:::::::::.......................::::::--------------------:::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+**##########****++=======++++******#############**+++==----------------::::::::::------------===------------------------------------------------------===--------=================------------------------:::::::::::::::::::..............................................................%@%%%%%%%@%@%%%%%%%%%%%%%@%%##*++**###***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%##***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%#####################################################################***######**#####**********++++++++===+++=====----===---==+++++#+:=*+++++++++++++++++++++++++++++++++++++++++++***++++++++++++++====+**+-:::::::::::::::::::::::::::::::::::::::-=--:::::::::::::::::::-==========================-:::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::.                              ......::::---------------------:::..............................................................................................................................           ..................................................................................................................................................................................................                                                 ..............::---============================================================================================================================-----------------------:::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==++++++++==--::....................................................................................................................................................................................::--=+++==-::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::...............:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+================================+*******************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++==========================================================++++++++++++**************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++========================================================+++*******+++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------::::::.................................................................................:::---=====---::......................................................................................................................::::::::........................::::::--------------------:::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++**##########***++=========+++++******###########**+++==----------------:::::::::::-----------===------------------------------------------------------------------=================------------------------::::::::::::::::::..............................................................#@%%%%%%%%%%%%%%%%%%%%%%%%%%##*++++*####***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+#%%%##****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%#####################################################################***#####**#####**********+++++++++=++++=====---====---==+++++#+:=*+++++++++++++++++++++++++++++++++++++++++++***++++++++++++++====+**+:::::::::::::::::::::::::::::::::::::::::-=-:::::::::::::::::::-==========================-::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::::::.                              ......::::---------------------:::..............................................................................................................................            .................................................................................................................................................................................................                                                 ..............::---============================================================================================================================-----------------------::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==+++++++++=--::....................................................................................................................................................................................::--=+++==-::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::..............:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************================================+*********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=======================================================+++++++++++++***************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++================================================+++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------::::::.................................................................................:::--======--:::.....................................................................................................................:::::::::........................::::::-----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+**##########***++============+++++++***###########**+===----------------:::::::::::------------=--------------------------------------------------------------------==================-----------------------:::::::::::::::::..............................................................*@%%%%%%%%@%@%%%%%%%%%%%%%@%##*+++++**####***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%##*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%#####################################################################***#####**######*********++++++++++++++=====---====--===+++++#+--**+++++++++++++++++++++++++++++++++++++++++****++++++++++++++===+***+:::::::::::::::::::::::::::::::::::::::::-=-:::::::::::::::::::--==========================-:::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..::::::::.                              ......:::---------------------::::..............................................................................................................................            .................................................................................................................................................................................................                                                 ..............::---===========================================================================================================================-----------------------::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==+++++++++=--::.....................................................................................................................................................................................:--=+++==-::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::...............:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************================================+**********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++======================================================+++++++++++++****************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++==================================+++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------::::::.................................................................................:::--======--:::.....................................................................................................................:::::::::........................::::::-----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++**########****+++====----=======+++++****#########**+===----------------::::::::::::---------------------------------------------------------------------------------=================------------------------::::::--::::::::..............................................................=@%%%%%%%%%%@%%%%%%%%%%%%%@%##*+++++++**####***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%#%%#******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%#####################################################################***#####**######*********+++++++++++++++====---====--===+++++*+--**+++++++++++++++++++++++++++++++++++++++++****+++++++++++++++==+***=::::::::::::::::::::::::::::::::::::::::::-=-:::::::::::::::::::-==========================-::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::::::::.                              .....::::---------------------::::..............................................................................................................................            .................................................................................................................................................................................................                                                 ..............::---===========================================================================================================================-----------------------:::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==++++++++==-:::.....................................................................................................................................................................................:--=+++==-::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::...............:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************================================+**********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++====================================================+++++++++++++*****************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++=============================+++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------::::::.................................................................................:::--=====---:::.....................................................................................................................::::::::.........................::::::-----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==+**########***+++=====------========+++++***#######***+==-----------------::::::::::::---------------------------------------------------------------------------------=================--------------------------::----:::::::...............................................................-%%%%%%%%%%%%%%%%%%%%%%%%%@%##*+++++++++***###*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%####******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%######################################################################**#####**######*********+++++++++++++++====---====--===+++++**--**+++++++++++++++++++++++++++++++++++++++++****+++++++++++++++==+***=::::::::::::::::::::::::::::::::::::::::::-=-:::::::::::::::::::-==========================-::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::::::                              .....:::----------------------:::...............................................................................................................................            ..................................................................................................................................................................................................                                                ..............::---===========================================================================================================================----------------------::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==++++++++==-::......................................................................................................................................................................................::-=+++==-::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::...............:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===============================***********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++==================================================++++++++++++++*****************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++=====================++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------::::::.................................................................................::---=====--:::......................................................................................................................::::::::.........................::::::-----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+**#######***+++=====---------=========++++****####***+==-----------------::::::::::::----------------------------------------------------------------------------------================--------------------------------:::::::...............................................................:%%%%%%%%%%%%@%%%%%%%%%%%%@%##*+++++++++++***###********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%#%###******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%#####################################################################***####**######*********+++++++++++++++====---====--===+++++**=-+*+++++++++++++++++++++++++++++++++++++++++****+++++++++++++++=+****-:::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::-===========================-::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::::::                              ....::::---------------------::::...............................................................................................................................            ..................................................................................................................................................................................................                                                ..............::---==========================================================================================================================-----------------------::::::.........::::::::::----------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==++++++++==-::......................................................................................................................................................................................::-==++==-::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===============================************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=================================================++++++++++++++******************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------::::::................................................................................:::---=====--:::.....................................................................................................................:::::::::.........................::::::-----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++**######***+++====-------------=========+++*********++==-----------------::::::::::::----------------------------------------------------------------------------------===============--------------------------------::::::::...............................................................:%%%%%%%%%%%%@%%%%%%%%%%%%@%###*++++++++++++**####*******+++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%#####******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%#####################################################################***#####*######*********+++++++++++++++====---====--===+++++**=-+*+++++++++++++++++++++++++++++++++++++++++****+++++++++++++++=+****-:::::::::::::::::::::::::::::::::::::::::::-=-::::::::::::::::::--==========================-::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                              ....::::---------------------:::................................................................................................................................            ..................................................................................................................................................................................................                                                ..............::---==========================================================================================================================-----------------------:::::...........:::::::::----------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==++++++++==-::......................................................................................................................................................................................::-==++==-::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::.................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===============================****************************************************************************************************************************#########************************++++++++++++++++++++++++++++++++++++===============================================+++++++++++++++******************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::.................................................................................:::--=====---:::.....................................................................................................................::::::::..........................:::::-------------------::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++***###****+++====----------------========++++*******++==-----------------::::::::::::----------------------------------------------------------------------------------===============-------------------------------::::::::.................................................................%@%%#%%%%%@@%@%%%%%%%%%%%%%###*++++++++++++++**####*****++++++++++++++++++++++++++++++++++++++++++++++++++++*#%######******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%#%####################################################################**############*********++++++++++++++=====---====--===+++++**=-=*+++++++++++++++++++++++++++++++++++++++++#***+++++++++++++++=+****-::::::::::::::::::::::::::::::::::::::::::::=-:::::::::::::::::::-==========================-:::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                            .....:::---------------------::::................................................................................................................................            ..................................................................................................................................................................................................                                                ..............::---==========================================================================================================================----------------------:::::.............:::::::::---------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==++++++++==-::......................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==============================+*******************************************************************************************************************#####################**********************+++++++++++++++++++++++++++++++++++++================================+===========++++++++++++++++******************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::.................................................................................:::--=====---::......................................................................................................................::::::::..........................:::::-------------------::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++*********+++=====------------------========++++***+++==------------------::::::::::::----------------------------------------------------------------------------------==============-------------------------------:::::::::.................................................................#@%%##%%%%%@%%%%%%%%%%%%%%@#**++++++++++++++++***###****+++++++++++++++++++++++++++++++++++++++++++++++++++#%%#######*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%######################################################################**############**********+++++++++++++=====---====--+==+++++**=-=*++++++++++++++++++++++++++++++++++++++++*#***+++++++++++++++=+***+-:::::::::::::::::::::::::::::::::::::::::::--=-::::::::::::::::::-===========================:::::::::::::::::-----::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                            .....:::---------------------::::................................................................................................................................            ..................................................................................................................................................................................................                                                ..............::---==========================================================================================================================----------------------::::..............::::::::::--------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==++++++++==-::......................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=============================+***************************************************************************************************************###########################***########**********++++++++++++++++++++++++++++++++++++================================+==========++++++++++++++++*******************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::.................................................................................:::--====---:::......................................................................................................................::::::::..........................:::::-------------------::::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++******++++=====----------------------======++++++++===------------------::::::::::::----------------------------------------------------------------------------------=============-------------------------------::::::::::.................................................................+@%%##%%%%%@%%%%%%%%%%%%%%@%*+++++++++++++++++++**##****++++++++++++++++++++++++++++++++++++++++++++++++++*%##**#####*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%##############%%#####################################################*#############**********+++++++=++++++=====--====--+==+++++**=:=*++*+++++++++++++++++++++++++++++++++++++*#***+++++++++++++++++***+-::::::::::::::::::::::::::::::::::::::::::::-=-::::::::::::::::::-===========================-:::::::::::::::::-----:.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                            ....::::---------------------:::.................................................................................................................................            ..................................................................................................................................................................................................                                                ..............::---==========================================================================================================================----------------------:::................:::::::::--------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==++++++++=--::..........................:...........................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=============================+*************************************************************************************************#####################################################**********+++++++++++++++++++++++++++++++++++================================+=========+++++++++++++++++*******************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--------:::::.................................................................................:::---==---:::.......................................................................................................................:::::::............................::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=++++*++++++=====------------------------=======+++++===------------------:::::::::::::----------------------------------------------------------------------------------============-----------:::::::::::::::::::::::::::::::.................................................................=@%%##%%%%%@%%%%%%%%%%%%%%@%#*+++++++++++++++++++**#****+++++++++++++++++++++++++++++++++++++++++++++++++*%##**##*###****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%#############%%%%%##################################################################*********+++++++=++++++=====--====--+==+++++**=:=++**+++++++++++++++++++++++++++++++++++++*#***++++++++++++++++****+:::::::::::::::::::::::::::::::::::::::::::-::-=-::::::::::::::::::-==========================-:::::::::::::::::-----::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                            ....::::--------------------::::.................................................................................................................................            ..................................................................................................................................................................................................                                                ..............::---==========================================================================================================================----------------------:::................::::::::::-------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==++++++++=--::.........................::...........................................................................................................................................................::--=++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************=============================**************************************************************************************##################################################################*********++++++++++++++++++++++++++++++++++++===============================+=========++++++++++++++++********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------:::::..................................................................................:::---=----:::.......................................................................................................................:::::::............................::::------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===+++++++======--------------------------==============------------------:::::::::::::----------------------------------------------------------------------------------============----------:::::::::::::::::::::::::::::::::................................................................-%%%###%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++*##***####*#****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%#############%%%%%%%%%##############################################################*********++++++++++++++=====--====--+==+++++**+:=**+*+++++++++++++++++++++++++++++++++++++*#***++++++++++++++++****+::::::::::::::::::::::::::::::::::::::::::::::-=-::::::::::::::::::-==========================-:::::::::::::::::-----::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                          .....::::--------------------:::..................................................................................................................................            ..................................................................................................................................................................................................                                                ..............::---==========================================================================================================================----------------------:::.................:::::::::-------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==++++++++=--::..........................:...........................................................................................................................................................::--=++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+============================****************************************************************************#############################################################################*********++++++++++++++++++++++++++++++++++++==============================+========+++++++++++++++++********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------:::::...................................................................................:::------:::........................................................................................................................::::::.............................::::------------------::::::::::::::::::::::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::---==============----------------------------============------:------------::::::::::::::----------------------------------------------------------------------------------===========---------::::::::::::::::::::::::::::::::::................................................................:%%%###%%%%%@%%%%%%%%%%%%%%@%*+++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++*###++*######****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%#############%%%%%%%%%%#############################################################*********++++++++++++++=====-=====--+==+++++**+:-**+*+++++++++++++++++++++++++++++++++++++##***++++++++++++++++****=::::::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::-===========================-:::::::::::::::::-----::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                          ....::::--------------------::::..................................................................................................................................            .................................................................................................................................................................................................                                                 ..............::---==========================================================================================================================----------------------:::..................::::::::-------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==++++++++=--::.......................................................................................................................................................................................:--=++==--:..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===========================+**********************************************************************####################################################################################*********++++++++++++++++++++++++++++++++++++=============================+=======+++++++++++++++++*********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------:::::...................................................................................::::---:::::.......................................................................................................................:::::::.............................::::------------------:::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::----============-----------------------------==========------::------------::::::::::::::----------------------------------------------------------------------------------===========--------:::::::::::::::::::::::::::::::::::................................................................:%@%###%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*++#####*#****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%###########%%%%%%%%%%%#############################################################*********++++++++++++++===========--+==+++++**+:-+***++++++++++++++++++++++++++++++++++++*##***+++++++++++++++*****=:::::::::::::::::::::::::::::::::::::::::::::::-=-::::::::::::::::::-==========================-:::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                          ....::::--------------------:::................................................................................................::.................................            .................................................................................................................................................................................................                                                 ..............::---=========================================================================================================================-----------------------:::...................::::::::------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--=+++++++==-:::.......................................................................................................................................................................................::-==+==--::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================+****************************************************************##########################################################################################**********++++++++++++++++++++++++++++++++++++============================+======+++++++++++++++++**********************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------:::::...................................................................................:::::::::::.......................................................................................................................::::::::.............................::::------------------::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::-------=====--------------------------------=========------:::------------::::::::::::::----------------------------------------------------------------------------------==========---------:::::::::::::::::::::::::::::::::::................................................................:#@%###%%%%%%%%@%%%%%%%%%%%%@#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*+=+#%#####****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%##########%%%%%%%%%%%%##%#########################################################*********++++++++++++++===========--+==+++++**+--+****+++++++++++++++++++++++++++++++++++*##***+++++++++++++++*****=:::::::::::::::::::::::::::::::::::::::::::::-:-=-::::::::::::::::::-=======================+==-::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                          ....::::--------------------:::................................................................................................:::................................            .................................................................................................................................................................................................                                                 ..............::---=========================================================================================================================-----------------------:::...................::::::::------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--=+++++++==-::........................................................................................................................................................................................::-==+==--::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=========================+************************************************************###############################################################################################**********+++++++++++++++++++++++++++++++++++============================++====++++++++++++++++++**********************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------:::::....................................................................................:::::::::.....................................................................................:.................................:::::::::.............................::::------------------::::::::::::::::::::::::::::::::::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------======--------:::------------::::::::::::::----------------------------------------------------------------------------------==========---------:::::::::::::::::::::::::::::::::::.................................................................*@%###%%%%%%@%%%%%%%%%%%%%%@%**+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+=+#%######****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%##########%%%%%%%%%%%%%##########################################################**********+++++++++++++==========---+==+++++**+--+*+*+**++++++++++++++++++++++++++++++++**##***+++++++++++++=+*****-:::::::::::::::::::::::::::::::::::::::::::::::--=-:::::::::::::::::-======================+====::::::::::::::::::------:.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                          ....:::--------------------:::................................................................................................::::................................            ......................................................................................................................................................................................::..........                                               ...............::---=========================================================================================================================-----------------------:::....................:::::::------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--==++++++==-::........................................................................................................................................................................................::-==+==--::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+========================+*****************************************************######################################################################################################***********+++++++++++++++++++++++++++++++++++============================+====+++++++++++++++++++*********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------::::::.....................................................................................:::::::.....................................................................................::................................:::::::::..............................::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------=====--------:::------------::::::::::::::----------------------------------------------------------------------------------==========---------:::::::::::::::::::::::::::::::::::.................................................................+%%###%%%%%%%%%%%%%%%%%%%%%%%#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+=+*%######****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%#########%%%%%%%%%%%%%%##########################################################**********++++++++++++++=========---+==+++++**+--+******++++++++++++++++++++++++++++++++**##***+++++++++++++++*****-::::::::::::::::::::::::::::::::::::::::::::::::-=-::::::::::::::::::-=======================+==-::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                        ....::::--------------------:::...............................................................................................:::::................................            ......................................................................................................................................................................................::..........             .....                             ...............::---========================================================================================================================------------------------:::.....................::::::------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--==++++++==-::........................................................................................................................................................................................::-==++=--::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=======================*************************************************###########################################################################################################***********+++++++++++++++++++++++++++++++++++============================+===++++++++++++++++++++*********************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------:::::................................................................................................................................................................................::::................................:::::::::..............................::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::------------------------------------------=====-------::::------------:::::::::::::---------==------------------------------------------------------------------------==========---------:::::::::::::::::::::::::::::::::::.................................................................=%%###%%%%%%%%%%%%%%%%%%%%%%@%**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%#*+=+#%######****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%########%%%%%%%%%%%%%%%%########################################################**********++++++++++++++=======-=--=+==+++++*#+--+******++++++++++++++++++++++++++++++++**##***++++++++++++++*****+-::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-=======================+==-:::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                        ....::::-------------------::::...............................................................................................:::::................................            .....................................................................................................................................................................................:::..........         .  .........                          ...............::---=======================================================================================================================-------------------------::::..........::.........:::::------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--==++++++==-::........................................................................................................................................................................................::-==++=--::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+======================********************************************#################################################################################################################************++++++++++++++++++++++++++++++++++===========================+==++++++++++++++++++++++********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------:::::...............................................................................................................................................................................:::::...............................::::::::::..............................::::------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------=====-------::::------------::::::::::::----------===----------------------------------------------------------------------===========---------:::::::::::::::::::::::::::::::::::.................................................................-%%####%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%#*+=+#%######****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%%#######%%%%%%%%%%%%%%%%%########################################################*********++++++++++++++=======----=+==+++++*#*--+******+++++++++++++++++++++++++++++++***##***++++++++++++++*****+-::::::::::::::::::::::::::::::::::::::::::::::::--=-::::::::::::::::::==========+===========++==-:::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                        ....::::-------------------::::...............................................................................................:::::................................            .....................................................................................................................................................................................::::.........        .............                          ...............::---=======================================================================================================================--------------------------:::.........:::.........:::::------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--==++++++=--::........................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++===================+**************************************#######################################################################################################################*************++++++++++++++++++++++++++++++++++=========================++=+++++++++++++++++++++++********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------:::::...............................................................................................................................................................................:::::...............................:::::::::...............................::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------:::::::::::::::::::::::::::::::::::::::----------------------------------------=====--------::::------------::::::::::::---------====----------------------------------------------------------------------===========---------:::::::::::::::::::::::::::::::::::.................................................................:%%%###%%%%%%%%%%%%%%%%%%%%%%%%**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%#*+=+#%######****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%%######%%%%%%%%%%%%%%%%%%########################################################*********++++++++++++++=======----=+==+++++*#*--+*******++++++++++++++++++++++++++++++**##****++++++++++++++*****+-:::::::::::::::::::::::::::::::::::::::::::::::::-=--:::::::::::::::::-=========+=======+++=+====::::::::::::::::::::-----::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                        ....::::------------------::::................................................................................................::::::...............................            .....................................................:...............................................................................................................................::::.........     . ..............                          ...............::---======================================================================================================================---------------------------:::::.....::::::........::::::----------------------------------------------------------------------------------------------------------------------------:::................................................................:::-==+++++==--::........................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=================+********************************#############################################################################################################################**************+++++++++++++++++++++++++++++++++=========================++++++++++++++++++++++++++********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------::::::..............................................................................................................................................................................::::::..............................::::::::::...............................:::-------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------:::::::::::::::::::::::::::::::::::::-----------------------------------------===---------:::-------------:::::::::::---------=====----------------------------------------------------------------------==========----------:::::::::::::::::::::::::::::::::::.................................................................:#%%###%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%#*==+#########****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%#####%%%%%%%%%%%%%%%%%%%%########################################################********++++++++++++++=======-==-=+==+++++*#*--+********++++++++++++++++++++++++++++***#*****++++++++++++++*****+=:::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-===============+++++=+====-:::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                       ...:::::------------------::::................................................................................................::::::...............................            .....................................................:...............................................................................................................................::::.........    .................                          ...............::---=====================================================================================================================----------------------------::::::::::::::::........::::::----------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==+++++==-::.........................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=================+****************************##################################################################################################################################**************+++++++++++++++++++++++++++++++++========================+++++++++++++++++++++++++++*******************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------::::::..............................................................................................................................................................................::::::..............................::::::::::..............................::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::::::::::::::::::::------------------------------------------=----------:::-------------::::::::::---------======----------------------------------------------------------------------==========----------:::::::::::::::::::::::::::::::::::..................................................................*%%*###%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%#*+=+####*####****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%#######################################################*********+++++++++++++=======-====+==+++++*#*--=*********+++++++++++++++++++++++++++*********+++++++++++++******+=::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-==============+++++=+=+==-::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                      ....:::::-----------------::::.................................................................................................::::::...............................            .....................................................:..............................................................................................................................::::::........   ..................                          ...............::---====================================================================================================================------------------------------::::::::::::::::.......::::::----------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==+++++==-::.........................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+================+************************######################################################################################################################################***************++++++++++++++++++++++++++++++++++======================++++++++++++++++++++++++++++******************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------::::::..............................................................................................................................................................................::::::..............................:::::::::...............................::::------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::-------------:::::::::----------======----------------------------------------------------------------------==========-----------::::::::::::::::::::::::::::::::::..................................................................+%%*###%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++#%##+=+#######*#****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%######################################################*********+++++++++++++=======-====+==+++++*#*--=*********+++++++++++++++++++++++++++*********+++++++++++++******+=----::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-==============+++++=+++==-::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                      ....:::::-----------------::::.................................................................................................::::::...............................            .....................................................:..............................................................................................................................::::::........  ..................                           ...............::---====================================================================================================================--------------------------------::::::::::::::.......::::::----------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==+++++=--::.........................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+================********************###########################################################################################################################################***************++++++++++++++++++++++++++++++++++======================++++++++++++++++++++++++++++******************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------:::::..............................................................................................................................................................................::::::..............................::::::::::...............................::::------------------:::::::::::----:::::::::::::::::::::::::::::::::::::::::::::----------------::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::--------------:::::::----------========---------------------------------------------------------------------==========-----------::::::::::::::::::::::::::::::::::..................................................................=%%####%%%%%%%%%%%%%%%%%%%%%%%%%%**+++++++++++++++++++++++++++++++++++++++++++++++++++++#%%#*=+##%##**##****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%####################################################*********+++++++++++++=======-===++==+++++*#*--=*********+++++++++++++++++++++++++++*********+++++++++++++******++------::::::::::::::::::::::::::::::::::::::::::::--=--:::::::::::::::::========+=+++++++++=++=+==-::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                      ....:::::-----------------:::..................................................................................................::::::...............................            .....................................................:..............................................................................................................................::::::.........    .................                        ................::--====================================================================================================================-----------------------------------:::::::::::::......::::::----------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==+++++=--::.........................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===============*************###################################################################################################################################################****************+++++++++++++++++++++++++++++++++=====================+++++++++++++++++++++++++++++*****************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----::::::..............................................................................................................................................................................::::::..............................:::::::::................................::::------------------::::::::::------:::::::::::::::::::::::::::::::::::::::::::::--------------:::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::--------------::::::----------=========---------------------------------------------------------------------==========-----------::::::::::::::::::::::::::::::::::..................................................................-%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++#%#%#++*#%#####*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%####################################################*********+++++++++++++=======-===++==+++++*#*--=*********++++++++++++++++++++++++++**********++++++++++++*******++------:::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-====+==+=+++++++++=++=+==-::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                      ....:::::----------------::::.................................................................................................:::::::...............................            .....................................................:..............................................................................................................................::::::........  .  ................                         ................::--====================================================================================================================---------------------------------------::::::::::....:::::::----------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==+++++=--::.........................................................................................................................................................................................::-==++==-::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::..............:::--==+++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************===============****############################################################################################################################################################****************++++++++++++++++++++++++++++++++++====================+++++++++++++++++++++++++++++*****************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----:::::..............................................................................................................................................................................:::::::..............................:::::::::................................:::-------------------:::::::::-------::::::::::::::::::::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::::::::::------------------------------------------------------::--------------:::------------==========---------------------------------------------------------------------==========------------:::::::::::::::::::::::::::::::::..................................................................:#@%####%%%%%%%%%%%%%%%%%%%%%%%%%@%*++++++++++++++++++++++++++++++++++++++++++++++++++*#%%#*+*#####*##*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%####################################################*********+++++++++++++=======-=+=++==+++++**+--=*********++++++++++++++++++++++++++**********++++++++++++******+++-------::::::::::::::::::::::::::::::::::::::::::::--=--::::::::::::::::-====++=+=++++++++++++=++=-:::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                    ....::::::----------------:::..................................................................................................:::::::...............................            .....................................................:..............................................................................................................................::::::........  .  ...............                          ................::--====================================================================================================================--------------------------------------------:::::::::::::::-----------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==+++++=--:..........................................................................................................................................................................................::-==++==-::...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::.............:::--==++++++++++++++++++++++++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=============+################################################################################################################################################################*****************+++++++++++++++++++++++++++++++++===================++++++++++++++++++++++++++++++++++*************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::::..............................................................................................................................................................................::::::...............................:::::::::...............................::::-------------------::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::------------------------------------------------------::-------------:--------------===========---------------------------------------------------------------------==========------------:::::::::::::::::::::::::::::::::...................................................................#%%####%%%%%%%%%%%%%%%%%%%%%%%%%%@%*++++++++++++++++++++++++++++++++++++++++++++++++*%#%%***#######******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%###################################################*********++++++++++++++======-=+=++==+++++**+--=*********++++++++++++++++++++++++++**********++++++++++++******+++-------:::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-===++=++++++++++++++=++==:::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                    ....::::::---------------::::..................................................................................................:::::::...............................            .....................................................::.............................................................................................................................::::::........      ............                            ................::--====================================================================================================================---------------------------------------------::::::::::::::-----------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==++++==-::..........................................................................................................................................................................................::--=++==-::..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::............::::-==+++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#*=============+################################################################################################################################################################******************+++++++++++++++++++++++++++++++++==================++++++++++++++++++++++++++++++++++++++++***************************************************++++++++********************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----::::::..............................................................................................................................................................................::::::..............................:::::::::................................::::-------------------:::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::---------------------------============---------------------------------------------------------------------==========------------:::::::::::::::::::::::::::::::::...................................................................*@%####%%%%%%%%%%%%%%%%%%%%%%%%%%@@%*++++++++++++++++++++++++++++++++++++++++++++++*#%%%###########*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%##################################################*********++++++++++++++======-=+=++==+++++**+--=*********++++++++++++++++++++++++++**********++++++++++++******+++-------:::::::::::::::::::::::::::::::::::::::::::::-----::::::::::::::::-====+=+++++++++++++++++==::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                    ....:::::::--------------:::...................................................................................................:::::::...............................            .....................................................::............................................................................................................................::::::::......        ..........                            .................::--====================================================================================================================-----------------------------------------------:::::::::::------------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==++++==-::..........................................................................................................................................................................................::--=++==-::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::............::::-==++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######+============+#################################################################################################################################################################******************+++++++++++++++++++++++++++++++++================+++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----::::::..............................................................................................................................................................................::::::...............................:::::::::................................::::-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------:::--------------------------=============--------------------------------------------------------------------===========------------:::::::::::::::::::::::::::::::::...................................................................=%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%@@#*++++++++++++++++++++++++++++++++++++++++++++*#%%%%#######*#*##***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%##################################################**********+++++++++++++======-===++==+++++**=--=**********++++++++++++++++++++++++***********+++++++++++*******+++=-------:::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-===+=++++++++++++++++++=::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                   .....:::::::-------------::::...................................................................................................:::-::::..............................            .....................................................::............................................................................................................................::::::::......         ........                             .................::--======================================================================================================================----------------------------------------------::::::::--------------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==++++==-::..........................................................................................................................................................................................::--=++==-::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::............::::-==++++++++++++++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############=============*#################################################################################################################################################################******************+++++++++++++++++++++++++++++++++==============++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----::::::..............................................................................................................................................................................::::::...............................::::::::.................................:::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------:::-------------------------==============--------------------------------------------------------------------===========------------:::::::::::::::::::::::::::::::::...................................................................-%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%@%#*++++++++++++++++++++++++++++++++++++++++++*#%%%%%%#####**#******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%##################################################********++++++++++++++======-===++==+++++**=--=**********++++++++++++++++++++++++***********+++++++++++******++++=-------:::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-=====++++++++++++++++++=-::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                  .....::::::::------------::::...................................................................................................:::--:::..............................            .....................................................::............................................................................................................................::::::::......           .....                              .................::--========================================================================================================================------------------------------------------------::----------------------------------------------------------------------------------------------------------------------------------:::.................................................................::--=++++=--::...........................................................................................................................................................................................:--=++==-::............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::............::::-==+++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################+============*#################################################################################################################################################################*******************+++++++++++++++++++++++++++++++++=============++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----::::::..............................................................................................................................................................................::::::...............................::::::::................................::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------::::-----------------------===============--------------------------------------------------------------------===========------------:::::::::::::::::::::::::::::::::....................................................................%@%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%#*+++++++++++++++++++++++++++++++++++++++++*%%%%%#####*#********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%##################################################********++++++++++++++======-===++-=+++++**=--=**********++++++++++++++++++++++++***********+++++++++++******++++=-------::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::-=====+++++++++++++=++++=-::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                  ....:::::::::------------:::....................................................................................................:::--:::..............................            .....................................................::............................................................................................................................::::::::......                                              .................::--==========================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.................................................................::--=++++=--::...........................................................................................................................................................................................:--=++==-::............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::............::::-==+++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################+===========+*##################################################################################################################################################################*******************++++++++++++++++++++++++++++++++=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+*******************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==----::::::...............................................................................................................................................................................:::::................................::::::::................................::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::::-----------------------===============--------------------------------------------------------------------===========-------------::::::::::::::::::::::::::::::::....................................................................#@%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%#*+++++++++++++++++++++++++++++++++++++++*#%%%#***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%##################################################*********+++++++++++++===+======++-=+++++**=---**********+++++++++++++++++++++++************++++++++++*******++++=--------:::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::-====++++++++++++++++++=::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                  ....:::::::::-----------::::....................................................................................................::----::...............................           .....................................................::............................................................................................................................::::::::......                                             ..................::--============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.................................................................::--=+++==--::...........................................................................................................................................................................................::-=++==--:....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:.....:::::::::::::...........::::-==+++++++++++++++++++++++++++++++*************+++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################+===========+###################################################################################################################################################################********************+++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----::::::...............................................................................................................................................................................:::::.................................::::::.................................::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::::----------------------=================-------------------------------------------------------------------==========-------------:::::::::::::::::::::::::::::::::....................................................................*@%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++**#%%%##*+++*****##*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%##################################################*********+++++++++++++===+=--==++=-=+++++**=---************+++++++++++++++++++++************++++++++++*******++++=--------:::::::::::::::::::::::::::::::::::::::::::-------::::::::::::::::-=====+++++++++=+++++++=::::::::::::::::::::::::---------::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                  ....:::::::::-----------::::...................................................................................................:::----::...............................           .....................................................::............................................................................................................................::::::::......                                             ..................::--=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.................................................................::--=+++==--::...........................................................................................................................................................................................::-==++=--::...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:.....:::::::::::::...........::::-==+++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################################+===========*###################################################################################################################################################################********************+++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---::::::................................................................................................................................................................................:::::.................................::::::.................................::::-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------=---------::::---------------------=-=================-------------------------------------------------------------------==========-------------:::::::::::::::::::::::::::::::::....................................................................=@%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%#*+++++++++++++++++++++++++++++*****##%%%#*++++*****##*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%##################################################********+++++++++++++===+=--==++=-=+++++**=--=************+++++++++++++++++++++*************++++++++*******+++++=--------::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::=====+++++++++=+++++++=:::::::::::::::::::::::::---------::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                .....::::::::::---------::::....................................................................................................:::----::...............................           .....................................................::...........................................................................................................................:::::::::......                                             ..................::--==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.................................................................::--==+===-:::...........................................................................................................................................................................................::-==++=--::...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:.....:::::::::::::...........::::--=+++++++++++++++++++++++++++++++******++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################################*=+=========*###################################################################################################################################################################*********************+++++++++++++++++++++++++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::::.................................................................................................................................................................................::::...................................::::..................................::::-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------==---------:::--------------------====================-------------------------------------------------------------------=========--------------:::::::::::::::::::::::::::::::::....................................................................-%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%#*++++++++++++++++++++++++++++#%##%%%%#*+++++****************+**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###%%%%%%########%%%%%%%%%%%%%%%%%%%%%%##################################################********+++++++++++++===+=--==++=-=+++++**=--=************+++++++++++++++++++++*************++++++++*******+++++=---------:::::::::::::::::::::::::::::::::::::::::::-------::::::::::::::::-====++++++++++++=++=+-:::::::::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                .....::::::::::---------::::....................................................................................................:::----::...............................           .....................................................::...........................................................................................................................::::::::::.....                                             ..................::--===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.................................................................::--=====--::............................................................................................................................................................................................::-==++==-::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::...........::::--=++++++++++++++++++++++++++++++*****+++++=====----===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################################################*==========+####################################################################################################################################################################*********************++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---::::::..................................................................................................................................................................................:::....................................:::..................................::::-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------==---------:::-------------------=====================-------------------------------------------------------------------========---------------:::::::::::::::::::::::::::::::::....................................................................:%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**++++++++++++++++++++++++++#%#####**+++++++*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******####%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%##################################################********+++++++++++++=====--==++=-=+++++**=--=***********+++++++++++++++++++++**************++++++++*******+++++=---------:::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::-=====++++++++=+++++++-::::::::::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                ....:::::::::::--------::::.....................................................................................................:::----::...............................           ................:....................................::...........................................................................................................................::::-:::::......                                            ..................::--================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------::------------------------------------------:::.................................................................::--=====--::............................................................................................................................................................................................::-==++==-::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::...........::::--=+++++++++++++++++++++++++++++++**++++====----------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++++++++++******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################################################################+==+======*####################################################################################################################################################################**********************+++++++++++++++++++++++++++++++++++=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---:::::...................................................................................................................................................................................::.........................................................................::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------==---------::------------------=======================-------------------------------------------------------------------=======---------------:::::::::::::::::::::::::::::::::......................................................................#@%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++*****+++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#*######%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%#################################################********+++++++++++++=====--=+++=-=+++++**=--=***********+++++++++++++++++++++***************+++++++******++++++=---------::::::::::::::::::::::::::::::::::::::::::::-------::::::::::::::::-====++++++++=+++++++:::::::::::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.               ....::::::::::::------:::::......................................................................................................::----::..............................            ...............::....................................::...........................................................................................................................::::--::::......                                            ..................::--=================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------:::-----------------------------------------:::..................................................................:--=====--::............................................................................................................................................................................................::-==++==-::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::...........::::--==++++++++++++++++++++++++++++++++++++==----::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################################################################*+=======+######################################################################################################################################################################*****####************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::................................................................................................................................................................................................................................................................::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------===----------------------------=========================----------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::......................................................................+@%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+++++++++++++++++++++++++*++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##########%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%#################################################********+++++++++++++==+===-=+++=-=+++++**=--=#**********+++++++++++++++++++++*****************++++*******++++++=---------:::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::-====+++++++++=+++++=::::::::::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.               ....::::::::::::-----:::::.......................................................................................................::----::..............................            ...............:::...................................::...........................................................................................................................::::---::::.....                                            ..................::--=================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------:::-----------------------------------------:::..................................................................::-=====-::::...........................................................................................................................................................................................::-==++==-::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::...........::::--==+++++++++++++++++++++++++++++++++++==--:::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++========+++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################################################################################*+=====+*######################################################################################################################################################################*****#####************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.................................................................................................................................................................................................................................................................::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------===--------------------------===========================----------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::......................................................................+@%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%#################################################********+++++++++++++==+===-=+++=-=+++++**=--=#**********++++++++++++++++++++******************++++*******++++++=---------:::::::::::::::::::::::::::::::::::::::::::::-------::::::::::::::::====+++++=+++=++=+==::::::::::::::::::::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.              .....:::::::::::::---::::::.......................................................................................................::----::..............................            ..............::::....................................:...........................................................................................................................::::----:::.....                                            ..................::--================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------:::----------------------------------------::::..................................................................::-====--:::::..........................................................................................................................................................................................::-==++==-::..........................................................................:::.........................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::............:::--==++++++++++++++++++++++++++++++++++==--::::::.::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++============+++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################################################################################**+++*########################################################################################################################################################################*****######************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::.................................................................................................................................................................................................................................................................::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------===------------------------==============================---------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::......................................................................=@%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**+*+++++++++++++++++++++++++++++++++***********+*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%##%%############################################********++++++++++++++====+--+++=-=+++++**---=#**********++++++++++++++++++++******************++++******+++++++=----------::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::-====+++++++++=++++-:::::::::::::::::::::::::::::-----------::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::              .....:::::::::::::::::::::........................................................................................................::----::..............................            ...............:::....................................:...........................................................................................................................:::-----:::.....                                           ...................::--=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------::::::---------------------------------------::::..................................................................::-====--::::::.........................................................................................................................................................................................::-==++==-::........................................................................:::::::.......................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::...........::::--==++++++++++++++++++++++++++++++++++==--::::....:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++====-------====++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################*****#######***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-::::.................................................................................................................................................................................................................................................................:::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------===----------------------==================================-------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::......................................................................-%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***++*+++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%#################################################********+++++++++++++====+--+++=-=+++++**---=#**********++++++++++++++++++++*******************++*******+++++++=----------:::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::-====++++=++==+=+++-::::::::::::::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::              .....:::::::::::::::::::::........................................................................................................::----::..............................            ...............::.....................................-...........................................................................................................................:::-----::::....                                    .      ...................::--=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------::::::---------------------------------------::::..................................................................::--===--::::::.........................................................................................................................................................................................::-==++==-::.......................................................................::::::::.......................................................................................................................................................................................................................................................................................................................................................................................................::::::::--::::::...........::::--==++++++++++++++++++++++++++++++++++==-::::.....:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++===----------===+++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################*****#######************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.................................................................................................................................................................................................................................................................::::----------------------::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------===--------------------=================================================------------------------------------------------------------------------:::::::::::::::::::::::::::::::::......................................................................:%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+**+++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###########%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%################################################********+++++++++++++=+==+--+++--=+++++**---=#***********++++++++++++++++++********************++*******+++++++=----------:::::::::::::::::::::::::::::::::::::::::::::-------::::::::::::::::-===++++=++==+=++=:::::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::.             ....:::::::::::::::::::::.........................................................................................................::----::..............................            ...............::.....................................-...........................................................................................................................:::------:::....                                    .      ..................:::--=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------:::::----------------------------------------::::..................................................................::--==---:::::::.....................................................................................................................................::.................................................::--=++==-::......................................................................:::----:::...................................................................................................................................................................................................................................................................................................................................................................................................::.::::::::-:::::::...........::::--==++++++++++++++++++++++++++++++++++==-:::......:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+****++++==-----------===+++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################*****########***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.................................................................................................................................................................................................................................................................::::----------------------:::::::-------:::::::::::--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------=-=====-----------------======================================================---------------------------------------------------------------------:::::::::::::::::::::::::::::::::......................................................................:#%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******############%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################********+++++++++++++++==*--+++--=+++++**---=#***********++++++++++++++++++*****************************+++++++=-----------:::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::---=++++=+++=+==+=::::::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::.            .....:::::::::::::::::::::.........................................................................................................::----::..............................            ...............::.....................................-...........................................................................................................................:::------:::....                                   ...   ...................::::--=================================================================================================================================------------------------------------------------------------------------------------------------------------------------------::::----------------------------------------:::...................................................................::--==--::::::::....................................................................................................................................::::.................................................:--=++==-::......................................................................:::-----::...................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::...........::::--==++++++++++++++++++++++++++++++++++=--:::......:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++**++++==-------------===+++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################******########************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.................................................................................................................................................................................................................................................................::::-----------------------::::----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------========----------------========================================================--------------------------------------------------------------------::::::::::::::::::::::::::::::::.......................................................................*%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##############%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################********+++++++++++++++==*--+++--=+++++**---=#************+++++++++++++++++*****************************+++++++=-----------:::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::---==+++++++====+-::::::::::::::::::::::::::::::::-------------:.:::::::::::::::::::::::::::::::::::::::::::::::::::::            .....::::::::::::::::::::..........................................................................................................:::---::..............................            ......................................................-...........................................................................................................................:::------:::....                                   ...   .................:::::---=================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------::-----------------------------------------:::...................................................................::------::::::::....................................................................................................................................:::::................................................::-==++=--::.....................................................................::--==--:::....................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::............:::--==+++++++++++++++++++++++++++++++++==--:::......::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++==----:::::----===+++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################******#########************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::.................................................................................................................................................................................................................................................................:::--------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------========----------------==========================================================--------------------------------------------------------------------::::::::::::::::::::::::::::::.......................................................................+%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###############%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################********+++++++++++++++=+*--+++--=+++++*+---+**************+++++++++++++++*****************************++++++++=-----------::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::--==+++++++==+==-:::::::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::.          .....:::::::::::::::::::::..........................................................................................................:::---:::.............................            ......................................................-...........................................................................................................................:::------:::....                                ....... ...............::::::::---=================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------:------------------------------------------:::...................................................................::------::::::::...................................................................................................................................::::::................................................::-==++=--::....................................................................:::-====--::....................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::............:::--==+++++++++++++++++++++++++++++++++==--:::......::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++==----:::::----===++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################******##########***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.................................................................................................................................................................................................................................................................:::------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::--------------------------------------==========----------------===========================================================--------------------------------------------------------------------:::::::::::::::::::::::::::::.......................................................................=%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################********+++++++++++++++=+*-=+++--=+++++*+---+**************+++++++++++++++*****************************++++++++=-----------::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::---=+=+++++=====-:::::::::::::::::::::::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::.          .....::::::::::::::::::::...........................................................................................................:::---:::.............................            ......................................................-...........................................................................................................................:::------:::.....                               ....... ..............::::::::----=================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....................................::.............................::------::::::::...................................................................................................................................::::::................................................::-==++=--::....................................................................::--====--::...................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::.............:::--==+++++++++++++++++++++++++++++++++==--:::......::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-----:::-----===++++++++******************************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################*******#########***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::................................................::...............................................................................................................................................................................................................:::-------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::------------------------------------=============--------------============================================================----------------------------------------------------------------------:::::::::::::::::::::::::::.......................................................................=%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*******+++++++++++++++++*-=+++--=+++++*+---+**************+++++++++++++++*****************************++++++++=------------:::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::--=+=+++++=====:::::::::::::::::::::::::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::.          .....::::::::::::::::::::...........................................................................................................:::---:::.............................            ......................................................-. .........................................................................................................................:::------:::.....                               .....................::::--------==================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....................................::.............................::-----:::::::::...................................................................................................................................::::::................................................::-==++==-::....................................................................::--=====-::...................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::.............:::--==+++++++++++++++++++++++++++++++++==--:::......::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==----:::::----===++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************##########################################################################################################################################################################################################################################################################################################################################*******#########***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::........................................:=++=-..-=-.............................................................................................................................................................................................................::::-------------------------:-----------:------------------------------------------------------::::::::::::::::::::::::::::::::::::::::------------------------------------===============----------------=========================================================-------------------------------------------------------------------------::::::::::::::::::::::::.......................................................................-%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################********+++++++++++++++**-=+++--=+++++*=---+**************++++++++++++++*****************************+++++++++=------------::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::--=++=++==+===-:::::::::::::::::::::::::::::::::::--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::          .....:::::::::::::::::::.....................................................................................................:.......::----::.............................            ......................................................-...........................................................................................................................:::-----::::.....                              ......................:::---------=================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::............................:::----:::::::::...................................................................................................................................:::::::...............................................::--=+===-::....................................................................::--=====-::...........................................................................................................................................................................................................................................................................................................::.......................................................................................::::::::::::::::.............:::--==+++++++++++++++++++++++++++++++++==--::........:::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-----:::-----===++++++++********************************************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################********########*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::........................................*@%@@%*=-==.............................................................................................................................................................................................................::::-----------------------:::::--------:::::::-------------------------------------------------::::::::::::::::::::::::::::::::::::::::---------------------------------===================----------------========================================================----------------------------------------------------------------------------:::::::::::::::::::::.......................................................................:#%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################********+++++++++++++++**-=*++--=+++++*=---+**************++++++++++++++*****************************+++++++++-------------::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::--==+=+=+++===-:::::::::::::::::::::::::::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::.        ......:::::::::::::::::::....................................................................................................:::......::----::.............................            ......................................................-...........................................................................................................................:::-----::::.....                             .......................::---------==================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::............................:::---::::::::::..................................................................................................................................::::::::...............................................::--=====-::....................................................................::--=====-::..........................................................................................................................................................................................................................................................................................................:::.......................................................................................::::::::::::::::.............:::--==+++++++++++++++++++++++++++++++++==--::........:::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==----:::-----====++++++++******************************************************************************************************************************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################################################################################################################********#########************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................:@@@@@@@@#+-.............................................................................................................................................................................................................::::----------------------:::::::-----::::::::::::::::::::::::::::::::::::-----------------------:::::::::::::::::::::::::::::::::::::::---------------------------------=====================----------------======================================================--------------------------------------------------------------------------------:::::::::::::::::........................................................................#%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################********+++++++++++++++**-=*+=--=+++++*---=++*************+++++++++++++*****************************++++++++++--------------::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::--=+==+++===--:::::::::::::::::::::::::::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::::::::::. .      ......::::::::::::::::::......... ..........................................................................................::::......::----::.............................            ......................................................-...........................................................................................................................:::-----::::.....                            ........................::---------==================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................::--:::::::::::..................................................................................................................................::::::::................................................::-====--::....................................................................::--=====-::....................................................................................................::::::::..............................................................................................................................................................................................:::::.....................................................................................::.:::::::::::::.............:::--==+++++++++++++++++++++++++++++++++==-:::........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==----:::-----====++++++++****************************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################********#########************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................-@@@@@@%@@@#-............................................................................................................................................................................................................::::----------------------:::::::::--::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::::::::::::::::::::::::--------------------------------======================-------------------===================================================----------------------------------------------------------------------------------------::::::::::.......................................................................*%%#######%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################********+++++++++++++++*+-=*+=--=++++++---=++**************++++++++++++****************************+++++++++++--------------::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::--=+=++++==--::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::. .      ......:::::::::::::::::.........  ..........................................................................................::::......::----::.............................            ......................................................-...........................................................................................................................:::-----::::.....                           ........................:::--------===================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................:::--:::................................................::--===--::....................................................................::--=====-::...................................................................................................::::::::::.............................................................................................................................................................................................::::::........................................................................................::::::::::...............:::--==+++++++++++++++++++++++++++++++++==-:::........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-----:------====++++++++***************************************************************************************************************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################*******#########*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................-@@@@@@@@@@@%*:.........................................................................................................................................................................................................::::----------------------::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::--------------------------------======================-------------------------------------------===========================-------------------------------------------------------::::::::------------------------------:::::.......................................................................+%%#######%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################********+++++++++++++++*+-=++=--=++++++---=+++*************+++++++++++*****************************+++++++++++---------------::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::-=++=++++=-::::::::::::::::::::::::::::::::::::-------------------:::::::::::::::::::::::::::::::::::::::::::::::::...     .......:::::::::::::::::.........  . .......................................................................................::::::.....::----::.............................            ......................................................:...........................................................................................................................:::-----::::....                            ........................:::-------====================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................:::--:::................................................:::-----::.....................................................................::--====--::..................................................................................................::::::::::::..........................................................................::::::............................................................................................................:::::::.........................................................................................::::::::...............:::--==+++++++++++++++++++++++++++++++++=--:::........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----------=====++++++++***************************************************************************************************************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################*******#########**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::........................................-@@@@@@@@@@@@@@#-..........................................................................................................:-=++**#**##%%%%%%%##**+=-::-::..............................................................::::----------------------::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------======================------------------------------------------------------================-----------------------------------------------------:::::::::::::-----------------------------::::......................................................................=%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################*********++++++++++++++*+-+++=--=+++++=---++++**************++++++++++****************************++++++++++++---------------:::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::-=++=+++=-::::::::::::::::::::::::::::::::::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::....   ......::::::::::::::::::.......    .  ......................................................................................::::::.....:::---::.............................            ......................................................::..........................................................................................................................:::------:::.....                             ......................::------======================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................:::--:::.................................................:::---:::.....................................................................::--====--::.................................................................................................::::-----:::::........................................................................::::::::...........................................................................................................:::::::................................................................................................................:::--==++++++++++++++++++++++++++++++++==--:::........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==----------====+++++++++**************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################********########***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::........................................:%@@@@@@@@@@@@@@@#+:..................................................................................................:=*%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@%#*=:..........................................................::::----------------------::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------======================---------------------------------------------------------============------------------------------------------------------::::::::::::::::::-------------------------:::......................................................................-%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################********++++++++++++++*=-+++=--=+++++=--=++++***************++++++++*****************************+++++++++++=----------------::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::-=++++++-:::::::::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::.............:::::::::::::::::.......     .   .....................................................................................::::::.....:::---::.............................            ......................................................::..........................................................................................................................:::------:::.....                                ...................::------======================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................:::---::..................................................:::::::......................................................................::--====--::................................................................................................::::--------:::.......................................................................::::::::::..........................................................................................................::::::::...............................................................................................................:::--==++++++++++++++++++++++++++++++++==--:::........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--------====++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################********########****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::........................................:%@@@@@@@@@@@@@@@@@%#=:........................................................................................:=*#%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@%+-:......................................................::::----------------------:::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------=====================------------------------------------------------------------==========----------------------------------------------------:::::::::::::::::::::::----------------------:::......................................................................:%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################********+++++++++++++**=-+++=--=+++++---=++++****************++++++******************************+++++++++++=----------------:::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::-=++=+=-:::::::::::::::::::::::::::::::::::::--------------------=:.::::::::::::::::::::::::::::::::::::::::::::::.............:::::::::::::::::.......         ....................................................................................:::--:::.....:::-:::.............................            ......................................................::..........................................................................................................................:::------:::.....                                 .................:::------======================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::...................................................:::::.......................................................................::--====--::................................................................................................:::----==----:::.....................................................................:::::---::::..........................................................................................................:::::::...............................................................................................................:::--==++++++++++++++++++++++++++++++++==--:::........::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------=====+++++++++************************************************************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################********#########***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::........................................:%@@@@@@%@@@@@@@@@@@@@@%*-:...............................................................................::=+#%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%*-:..................................................::::-----------------------::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------======================-------------------:------------------------------------------========-------------------------------------------------------::::::::::::::::::::::--------------------:::.......................................................................#%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################********+++++++++++++**--+++=-==++++=---=+++++**************++**++******************************++++++++++++=----------------:::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::--=+=+=-:::::::::::::::::::::::::::::::::::::--------------------=-:::::::::::::::::::::::::::::::::::::::::::::::.............::::::::::::::::......             ..................................................................................:::--:::.....:::::::.............................            ......................................................::..........................................................................................................................:::------:::......                        .      . ...............::::------=====================================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::...............................................................................................................................::--====--::...............................................................................................::::--======---:::...................................................................::::------::::.........................................................................................................:::::::...............................................................................................................::::-==++++++++++++++++++++++++++++++++===-:::.........:::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++====----====++++++++++********************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################*******#########****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::..........................................*@@@@@%#@@@@@@@@@@@@@@@@@@%#+-:................................................................:-*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%#-...............................................::::-----------------------::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------=====================--------------------:::::::::::::::::::-------------------------=======--------------------------------------------------------:::::::::::::::::::::::::----------------:::.......................................................................*%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################********+++++++++++++**--+++=-=+++++=---++++++****************++++******************************++++++++++++=-----------------:::::::::::::::::::::::::----:::::::::::::::::::-----:::::::::::::::---=++=-:::::::::::::::::::::::::::::::::::::---------------------=-::::::::::::::::::::::::::::::::::::::::::::::.............::::::::::::::::......             ..................................................................................:::--:::.....:::::::.............................            ......................................................::..........................................................................................................................:::------:::.....                                . ..............:::::-------====================================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::...............................................................................................................................::--====--::...............................................................................................:::---======---:::...................................................................:::--------:::.........................................................................................................:::::::...............................................................................................................::::-==+++++++++++++++++++++++++++++++++==--:::........:::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++===========++++++++++**************************************************************************************************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################################*******#########*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::.=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+-.............................................-##%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%-..............................................::::------------------------:::::------:::::::::::::::::::----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------=====================------------------:::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------::::::::::::::::::::::::::-------------:::.......................................................................+%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################********+++++++++++++**--+++=-++++++----+++++++*************************************************++++++++++++=-----------------:::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::----===:::::::::::::::::::::::::::::::::::::::--------------------=--::::::::::::::::::::::::::::::::::::::::::::::............:::::::::::::::......              ..................................................................................::----::.....:::::::.............................            ......................................................::..........................................................................................................................::-------:::.....                               ................::::::--------==================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::...............................................................................................................................::--====-:::...............................................................................................:::--========---:::.................................................................:::----==---:::.........................................................................................................::::::::...............................................................................................................:::-==+++++++++++++++++++++++++++++++++==--:::........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++======++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################################################################################********########*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::.....................................::::::%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#=:.................................::..:+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%-.............................................::::-----------------------------------:::::::::--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------======================-----------------::::::::::::::::::::::::::::::::::::-:------------------------------------------------------------------------------:::::::::::::::::::::::::---------::::.......................................................................=%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################********++++++++++++*+--+++=-=++++=---=+++++++*************************************************++++++++++++=-----------------:::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::-----=-:::::::::::::::::::::::::::::::::::::::-----------------------::::::::::::::::::::::::::::::::::::::::::::::...........:::::::::::::::.......              ..................................................................................::----:::.....:::::..............................            ......................................................::.........................................................................................................................:::--------::.....                              ................:::::::---------=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::...............................................................................................................................::--====-:::...............................................................................................:::--=========---:::...............................................................::::---====---::............................................:::::::::....................................................::::::::...............................................................................................................:::-==+++++++++++++++++++++++++++++++++==--:::........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################################********########******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.....................................:::::::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*-:.............................::*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%-...........................................:::::-----------------------------------:::::::--------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------=====================------------------::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------:::::::::::::::::::::::------:::::.......................................................................:%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################********++++++++++++*+--+++=-=++++=---=+++++++**************************************##**********++++++++++++------------------::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::---:--::::::::::::::::::::::::::::::::::::::::--------------------==-::::::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::::......              ...................................................................................::-----::......::::..............................            ......................................................::.........................................................................................................................:::--------::......                           .................::::::::---------=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::...............................................................................................................................::--===--::................................................................................................:::--==========--:::..............................................................::::---=====---:::.........................................::::::::::::::.......:::::.....................................::::::::...............................................................................................................:::-==++++++++++++++++++++++++++++++++++=--:::........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################********########********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::....................................::::::::*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%#+-:.....................::=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%-..........................................::::-------------------------------------::::---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------=====================-----------------:::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------::::::::::::::::::::::::::::::::........................................................................:#%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################********++++++++++++*+--+*+=--++++----+++++++++****#*****************************************************+++----------------------:::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::--------------------===::.:::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::::.....               ...................................................................................::-----::........................................            ......................................................::.........................................................................................................................:::--------::......                          ..................:::::::::---------================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::...............................................................................................................................:::--==--::................................................................................................:::--==========---:::............................................................::::---=======--:::.......................................:::::::::::::::::.....:::::::....................................:::::::::..............................................................................................................:::-==++++++++++++++++++++++++++++++++++==-:::........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++***************************************************************************************************************************************************************************************************************************##########********************########################################################################################################################################################################################################################################################################################################################################################################################################*********#######********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::....................................::::---:=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*-:.:=%**=-:::::::=*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@#-.........................................::::------------------------------------::::::--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::-------------------------------=====================-----------------::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------:::::::::::::::::::::::::::::.........................................................................*%%###########%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################*********++++++++++**+--+*+===+++=---=+++++++++**##**++****************************************+++++++++++++--=-------------------:::::::::::::::::::::::::::::::::::::::::::::-----::::::::::::::--:-:::::::::::::::::::::::::::::::::::::::::::--------------------==-::::::::::::::::::::::::::::::::::::::::::::::........:::::::::::::::.....                ...................................................................................::-----::........................................            ......................................................::.........................................................................................................................:::--------::.....                           ..................:::::::::---------================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::................................................................................................................................::--==--::................................................................................................:::--===========--:::...........................................................::::---========--:::......................................:::::::::::::::::::...:::::::::...................................:::::::::..............................................................................................................:::-==++++++++++++++++++++++++++++++++++==--::........::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++**********************************************************************************************************************************************************************************************************************################******###################################################################################################################################################################################################################################################################################################################################################################################################################*********#######*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::....................................:::----::*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%-........................................::::------------------------------------::::::-------------------------------------------------------::::::::::::::::::::::::::::::::::::-------------------------------=====================-----------------:::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------:::::::::::::::::::::::::::.........................................................................+%%###########%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%######################*********++++++++++**+-=**+===+++=---+*++++++++***++++++**************************************++++++++++++++=++==------------------::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::---------------------==-::::::::::::::::::::::::::::::::::::::::::::::.......::::::::::::::......                ...................................................................................::-----::........................................            ......................................................::.........................................................................................................................:::--------:::....                           .................::::::::::----------===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::................................................................................................................................::--==--::................................................................................................::---===========---:::........................................................:::::----========--:::.....................................::::::::::::::::::::::::::::::::....................................::::::::..............................................................................................................:::-==++++++++++++++++++++++++++++++++++==--:::.......::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++**+++****************************************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################################################################################################################################################################################################################*********#######*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::.....................................::------:-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%-.......................................::::-----------------------------------:::::::::--------------------------------------------------------:::::::::::::::::::::::::::::::::------------------------------======================------------------::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------::::::::::::::::::::::::::.........................................................................=%%%##########%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#############################%%#%%#%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%######################**********+++++++++**+-++*+=-++++----*+++++++++++++++++++*************************************++++++++++++++++++=-------------------::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------==:::::::::::::::::::::::::::::::::::::::::::::::......::::::::::::::.....                  .................................................................................:::-----:::.......................................            ......................................................::.........................................................................................................................:::--------::......                     ......................::::::::::-----------===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::............................::::::::::::::::..................................................................................................................................::----::................................................................................................................................::--==--::................................................................................................::---============--:::.......................................................:::::----=========--:::....................................::::::::::-:::::::::::::::::::::::...................................::::::::..............................................................................................................:::-==++++++++++++++++++++++++++++++++++==--:::........:::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################################################################################################################*********########*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************+***************++****+++++++++*++***+++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.....................................::------::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%-......................................::::-----------------------------------::::::::::::------------------------------------------------------::::::::::::::::::::::::::::::::------------------------------======================------------------::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------:::::::::::::::::::::::::.........................................................................-%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##########################%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%#######################**********++++++++**+-+*+===+++=---=*+++++++++++++++++++*************************************++++++++++++++++++=--------------------:::::::::::::::::::::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------=-:::.:::::::::::::::::::::::::::::::::::::::::::.:::::::::::::::::......                  .................................................................................:::--=--:::.......................................           .......................................................::.........................................................................................................................:::--------::......                     ......................::::::::::-----------==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::................................................................................................................................::------::................................................................................................::---============---:::.....................................................:::::----==========--:::....................................::::::::::---:::::::::::::::::::::...................................::::::::..............................................................................................................:::--=++++++++++++++++++++++++++++++++++==--:::........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************########*####################################################################################################################################################################################################################################################################################################################################################################################################################################################*********########*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+*******++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................::------:::%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%@@@@%-.....................................::::----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::------------------------------=====================-------------------:::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------::::::::::::::::::::::::.........................................................................:%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%#######################***********++*++++**==+*+===+++----+#*++**+++++++++++++++***********************************+++++++++++++++++++=----------------------::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------=-::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....                    ................................................................................:::-==--:::.......................................           ........................................................:.........................................................................................................................:::--------::......                    .......................::::::::::-----------==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....................................:::.............................:::::::::::::::..................................................................................................................................::----::................................................................................................................................::------::................................................................................................:::--=============--:::....................................................::::----============--:::...................................:::::::::::-----:::::::::::::::::::...................................::::::::..............................................................................................................:::--=++++++++++++++++++++++++++++++++++==--:::........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********######***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************++*++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.....................................:::------::.=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%-...................................:::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----::::::::::::::::::::::::::::::------------------------------=====================-------------------:::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------::::::::::::::::::::::...........................................................................#%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%#######################************+*++++**==+++===++=---=##*+***+++++++++++++++***********************************+++++++++++++++++++=--------------------===--:::::::::::::::::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------==:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......                     ...............................................................................::--===-:::.......................................           ........................................................-.........................................................................................................................:::--------::.......                  ........................::::-::::::----------=============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....................................:::.................................:::::::::::..................................................................................................................................::----::................................................................................................................................::------::................................................................................................:::--=============---:::...................................................:::----=============--:::...................................:::::::----------::::::::::::::::::...................................::::::::..............................................................................................................:::--=++++++++++++++++++++++++++++++++++==--:::........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********######************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=--:::.....................................:::------::::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%-..................................:::::---------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::------------------------------=====================--------------------::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------::::::::::::::::::::::...........................................................................+%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###################%%%%%%%%%%@@@%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%#######################**************++++*+==**+===++=---=***+***++++++++++++++++*********************************++++++++++++++++++++=-----=====================-::::::::::::::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------=-:::::::::::::::::::::::::::::::::::::::::::::::::.::::::::::::.....                       ..............................................................................::--===--::........................................          ........................................................-.........................................................................................................................:::--------::........              ..........................::::--::::::---------=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....................................::..................................:::::::::::..................................................................................................................................::----::................................................................................................................................::-----:::................................................................................................:::--==============--:::..................................................:::---===============--:::..................................::::::::----------:::::::::::::::::::..................................::::::::..............................................................................................................:::--==+++++++++++++++++++++++++++++++++==--:::.........::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********######*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.....................................:::------:::.=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%-.................................::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------=====================--------------------::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------:::::::::::::::::::::...........................................................................-%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##################%%%%%%%%%%%%%@@@@@@%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################**************+++**+-=**+====+----=++++*#*++++++++++++++++********************************+++++++++++++++++++++=--====+++++++++++++++++++++=-::::::::::::::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=-:::::::::::::::::::::::::::::::::::::::::::::::...:::::::::::.....                       ..............................................................................::--===--::........................................         .........................................................-.........................................................................................................................:::--------::........              ..........................:::---::::::---------===========================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....................................::..................................:::::::::::..................................................................................................................................::----::................................................................................................................................:::----:::................................................................................................:::--==============---:::................................................::::--================--:::..................................:::::::::----------::::::::::::::::::..................................::::::::..............................................................................................................:::--==+++++++++++++++++++++++++++++++++==--:::.........::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************###########################################################################################################**********########################################################################################################################################################################################################################################################################################################################################################**********#####*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++=======
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::------::::.#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%=................................::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------====================----------------------:::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::::::...........................................................................:%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##################%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################**************+++**+-+**+=====----=++++*#*+++++++++++++++++*******************************++++++++++++++++++++=====++++=-:..::----==+++++++++=--::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=-:::::::::::::::::::::::::::::::::::::::::::::::....:::::::::.....                          ............................................................................::--===--::........................................         .........................................................-.........................................................................................................................:::--------::.........          .............................:::---::::::---------==========================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::...................................::..................................:::::::::::..................................................................................................................................::----::................................................................................................................................:::----:::................................................................................................:::--===============--::::...............................................:::---================--:::..................................:::::::::-----------:::::::::::::::::..................................::::::::..............................................................................................................::::--==++++++++++++++++++++++++++++++++==--:::.........:::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************##############################################################################################################*************########################################################################################################################################################################################################################################################################################################################################################**********####***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++======================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::------:::..-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@+...............................::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------====================------------------------:::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::::::...........................................................................:%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#################%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################***************++**+-+**+++=+=----=++++*#*+++++++++++++++++*******************************++++++++++++++++++++==+++===:.            ..:=+++++++=-:::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------=-::.::::::::::::::::::::::::::::::::::::::::::......::::::::.....                          ............................................................................::-====--::........................................         .........................................................-.......................................................................:::::.............................................:::--------::.........         ..............................:::----:::::---------=========================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::...................................::..................................:::::::::::.....................................................................::........::.................................................::----::................................................................................................................................:::----:::................................................................................................:::--===============---::::..............................................:::--=================--:::.................................::::::::::----------::::::::::::::::::..................................::::::::..............................................................................................................::::--==++++++++++++++++++++++++++++++++==--:::.........:::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************###################################################################################################################**************#######################################################################################################################################################################################################################################################################################################################################################***********##*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++===========================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::------:::..:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@*:.............................::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------====================--------------------------:::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::::::............................................................................#%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%########################**************+****+***+++++-----+++++*#*++++++++++++++++++*****************************++++++++++++++++++++++=-:...                    .:=++++++=-::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------=-::::::.:::::::::::::::::::::::::::::::::::::.......::::::.....                            ..........................................................................:::-=====-::........................................         .........................................................:.......................................................................::::::............................................:::--------::................................................::-----::::::--------========================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::..................................:::::::::::....................................................................:::::.......::................................................::----::................................................................................................................................:::----::.................................................................................................:::--================--:::::.............................................::---=================--:::.................................:::::::::::---------:::::::::::::::::...................................::::::::...............................................................................................................:::--===+++++++++++++++++++++++++++++++==--:::.........:::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************#######################################################################################################################***************#######################################################################################################################################################################################################################################################################################################################################################********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++==============================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::------:::...-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@*:............................::::----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------====================---------------------------::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::::::............................................................................+%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#################%%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%########################*******************+***++++=----=+++++*#*++++++++++++++++++*****************************+++++++++++++++++++=-:.......                       .-=+++==:::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=-:.:::::::::::::::::::::::::::::::::::::::::::........:::......                              ........................................................................:::-=====-::........................................         .........................................................:......................................................................::::::::...........................................:::-------:::................................................::-----::::::--------========================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.......::::.......................:...................................:::::::::::....................................................................:::::.......::................................................::----::................................................................................................................................:::----::.................................................................................................:::--================---:::::...........................................:::--==================--:::.................................:::::::::::---------:::::::::::::::::...................................::::::::...............................................................................................................::::--===++++++++++++++++++++++++++++++==--:::.........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************############################################################################################################################***************#######################################################################################################################################################################################################################################################################################################################################################********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================-----
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::------:::....=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@#-..........................:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------====================---------------------------::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::::............................................................................-@%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******################%%%%%%%%%%%%%%%%%%%%%#%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%##########################********************+++++=----=+++++*#*++++++++++++++++++****************************+++++++++++++++=:..............                         :-++++-::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------=-::::::::::::::::::::::::::::::::::::::::::::................                                .......................................................................:::-=====-::........................................         .........................................................:......................................................................:::--:::...........................................:::-------:::................................................::------:::::--------=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::....::::::..........................................................::::::::::::...................................................................::::::......:::................................................::----::................................................................................................................................::::--:::.................................................................................................:::--=================---::::::.........................................:::--==================--:::.................................:::::::::::---------::::::::::::::::.....................................:::::::...............................................................................................................::::---===+++++++++++++++++++++++++++++==--:::.........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************####################################################################################*************##################################***************#######################################################################################################################################################################################################################################################################################################################################################*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::------:::.....-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%+.........................:::::---------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------====================----------------------------:::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::::.............................................................................:%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******################%%%%%%%%%%%%%%%%%%%%%##%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%############################*****************++++++----=++++++*#*+++++++++++++++++*****************************+++++++++++++=:..................                         .:=+++-::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=--:::::::::::::::::::::::::::::::::::::::::::...............                                 .......................................................................:::-=====-::.........................................        .........................................................:......................................................................:::---:::..........................................:::-------:::................................................::------::::::-------=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::....................................................:::::::::::::::::...................................................................::::::......:::................................................::----::.................................................................................................................................::::-:::.................................................................................................:::---=================----:::::........................................:::--==================--:::................................::::::::::::---------:::::::::....::......................................::::::.................................................................................................................::::----===+++++++++++++++++++++++++++==--:::..........::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************#######################################################################################****************#################################***************#######################################################################################################################################################################################################################################################################################################################################################**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================------------------
*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::------::.......:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%*:.......................:::::---------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------====================----------------------------:::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::::..............................................................................#%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##############%%%%%%%%%%%%%%%%%%%%%%%%%%##%%@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%###########################*********************+*=----=++++++*#**++++++++++++++++****************************++*+++++++++-:......................                          .:-==-::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------==:::::::::::::::::::::::::::::::::::::::::::...............                                 .......................................................................:::-=====-::.........................................        .........................................................:......................................................................::----:::..........................................::--------:::................................................:::-----::::::-------=======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::................................................:::::::::::::::::::::..................................................................::::::::.....:::................................................::----::.................................................................................................................................::::::::..................................................................................................::---===================----::::......................................:::---==================--:::................................::::::::::::---------:::::::::............................................::::::..................................................................................................................:::::---===+++++++++++++++++++++++++++==--:::.........::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************#############################################################################################*****************################################***************########################################################################################################################################################################################################################################################################################################################################################**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================-------------------------
**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................::------:::.......:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@#-......................:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===================-----------------------------:::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::::..............................................................................*%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#############%%%%%%%%%%%%%%%%%%%%%%%%#%%%##%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%#########################**********************+++=----+++++++*#**+++++++++++++++*****************************++*+++++++=:..........................                             .:::::::::::::::::::::::::--------:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=--:.:::::::::::::::::::::::::::::::::::::::::.............                                    .....................................................................::--=====-::.........................................       ..........................................................:.....................................................................:::-----::..........................................::--------:::................................................:::-----::::::-------=======================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::............................................:::::::::-----------::::..................................................................::::::::.....::::...............................................::----::.................................................................................................................................::::::::..................................................................................................:::--====================----::::.....................................:::--===================--:::................................::::::::::::---------::::::::.............................................::::::...................................................................................................................:::::---===++++++++++++++++++++++++++==--:::.........:::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************##################################################################################################******************################################**************########################################################################################################################################################################################################################################################################################################################################################***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================----------------------------
**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................:::----:::.........:+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@%+:....................:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===================----------------------------:::::::::::::::::::::::::::::::::-::::::--------------------------------------------------------------------------------------::::::::::::::::::..............................................................................=%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#############%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%#########################**********************+++----=+++++++*#**+++++++++++++*******************************+*++++**+-.............................                                .:::::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=-::::::::::::::::::::::::::::::::::::::::::............                                        ..................................................................::--=====-:::.......................................        ................................................................................................................................::------::..........................................::--------:::.................................................::-----:::::::------=======================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::.........................................::::::------------------:::..........................:......................................:::::::::....:::::...............................................::----::.................................................................................................................................::::::::..................................................................................................:::--=====================----:::.....................................:::--===================--:::................................::::::::::::----------:::::::..............................................::::....................................................................................................................:::::::---==+++++++++++++++++++++++++==--::::........:::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************###**********######################################################################################################******************################################**************########################################################################################################################################################################################################################################################################################################################################################***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================-------------------------------
**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................::::--::::...........=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@#-...................:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===================----------------------------::::::::::::::::::::::::::::::::--::::::--------------------------------------------------------------------------------------::::::::::::::::::..............................................................................:%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******############%%%%%%#%%%%%%%%%%%%%%%%%%##%%##%#%%%%@@@@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%##########################*******************+*+*+---==+++++++*#**+++++++++++++******************************+**+*+**=:..:............................                                 :::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------::::::::::::::::::::::::::::::::::::::::::..........                                           .................................................................::--=====-:::.......................................        ................................................................................................................................::------::..........................................::--------:::.................................................:::----:::::::------=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::......................................::::------==========------:::.........................:::.....................................:::::::::....:::::...............................................::---:::.................................................................................................................................:::::::...................................................................................................:::--=======================---:::....................................::---===================--:::................................::::::::::::----------:::::::..............................................::::....................................::::..............................................................................::::::--==++++++++++++++++++++++++++==--:::........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************#############################################################*****##################################################*******************################################**************########################################################################################################################################################################################################################################################################################################################################################************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================--------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................::::::::::............-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@%+:................:::::---------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===================---------------------------:::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::::..............................................................................:#%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###########%%%%%%#%%%%%%%%%%%%%%%%%%%%########%%%#%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%#%%%###%%##################%%########################*********************++*+---=++++++++*#**+++++++++++*********************************++*+*+::.:::::...........................                                 .:::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=-::::::::::::::::::::::::::::::::::::::::::..                                                      .............................................................::--=====-:::.......................................        ................................................................................................................................::------::..........................................::--------:::..................................................:::----::::::------=======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::....................................::::----=================---::::.......................:::::....................................:::::::::....:::::...............................................:::--:::..................................................................................................................................::::::...................................................................................................:::--=======================---::::...................................::---===================--:::................................::::::::::::-----::---:::::::..............................................::....................................::::::::..............................................................................:::::--==+++++++++++++++++++++++++==--::::.......:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************##############################################################*********################################################*******************################################**************########################################################################################################################################################################################################################################################################################################################################################************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================----------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::.......................................:::::::::..............:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@#-...............:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------==================----------------------------:::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::::...............................................................................*%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##########%%%%%%#+#%%%%%%%%%%%%%%%%%%%%#########%%#%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#######################%#########################*********************++*=--==++++++++*#**+++++++++++********************************+**+*=:::::::::::..........................                                  .::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------=-:::::::::::::::::::::::::::::::::::::::::..                                                          .........................................................::--=====-:::.......................................        ................................................................................................................................::------:::........................................:::--------:::..................................................:::----:::::::-----=======================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..................................:::---======+++++++++=======--:::.......................:::::....................................::::::::::..::::::...............................................::::-:::..................................................................................................................................::::::...................................................................................................:::--========================---:::..................................:::---===================--:::................................::::::::::::----------:::::::..............................................::..................................::::::::::...............................................................................::::--==+++++++++++++++++++++++++===-::::.......:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************#################################################################**********###############################################*******************################################**************########################################################################################################################################################################################################################################################################################################################################################*************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================--------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::.......................................:::::::::................+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@%*:.............:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------==================------------------------:::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------:::::::::::::::::...............................................................................=%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#########%%%%%%%%--#%%%%%%%%%%%%%%%%%%%%#############%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################*******************++*+=--=+++++++++*#**++++++++++**********************************++*=::::::::::::::........................                                   .:::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=--:::::::::::::::::::::::::::::::::::::::::.                                                              ........  ...........................................::-======--::.......................................        ................................................................................................................................::------:::........................................:::--------:::...................................................::----:::::::-----=======================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::................................:::--====+++++++++++++++++====--::......................:::::::...................................::::::::::.:::::::...............................................:::::::...................................................................................................................................::::::...................................................................................................:::--=========================--:::..................................:::--====================--:::................................::::::::::::----------::::::................................................:.................................::::::::::::...............................................................................::::-===+++++++++++++++++++++++++==--:::.......::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************#####################################################################***********###############################################********************###############################***************########################################################################################################################################################################################################################################################################################################################################################*************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================----------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.......................................::::::::..................:+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@%=............:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------==================-----------------------::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------:::::::::::::::::...............................................................................:%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%#*++++++++++++++++++++++++++++++++++++++++++++++++++++******##########%%%%%%##%:-%%%%%%%%%%%%%%%%%%%%%%##########%#%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################*******************++++=--=+++++++++*#*+++++++++++*********#**********************++*+-:::::::::::::::::.......................                                   .-:::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=--::::::::::::::::::::::::::::::::::::::::.                                                                         ..........................................::-======--::.......................................        ................................................................................................................................:::-----:::........................................:::--------:::...................................................::----:::::::-----=======================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::...............................::--====++++++++++++++++++++===--::......................:::::::...................................:::::::::::::::::::..............................................:::::::...................................................................................................................................::::::...................................................................................................:::---========================---:::.................................:::--====================--:::................................:::::::::::::---------::::::.................................................................................::::::::::::::...............................................................................:::-===+++++++++++++++++++++++++==--::::......::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************#######################################***##############################***********###############################################********************###############################***************########################################################################################################################################################################################################################################################################################################################################################**************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============----------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::........................................::::::......................-*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-..........:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------==================----------------------:::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------::::::::::::::::................................................................................:#%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#%#*++++++++++++++++++++++++++++++++++++++++++++++++++******#########%%%%%%%%+#%:=%%%%%%%%%%#%%%%%%%%%%%##########%##@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%###########################%#######################*******************++++--=++++++++++*#*+*+++++++**********##*********************++*+::::::::::::::::::::::.....................                                   .-:::::::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------::::::::::::::::::::::::::::::::::::::::.                                                                              ....................................::-===+==--::.......................................        .................................................................................................................................:::----:::........................................:::--------:::...................................................:::----::::::-----=======================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................::--==+++++++++++++++++++++++++==-:::.....................:::::::..................................::::::::::::::::::::..............................................:::::::....................................................................................................................................:::::...................................................................................................:::---=========================--:::................................:::---====================--:::................................:::::::::::::--------:::::::.................................................................................::::::::::::::...............................................................................:::--==+++++++++++++++++++++++++==--::::......::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************#########################################**********############################**********###############################################********************###############################***************########################################################################################################################################################################################################################################################################################################################################################**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========--------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.........................................::::.........................=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+:........::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------==================----------------------:::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------::::::::::::::::.................................................................................*@%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++****##########%%%%%%%%#=#%:=%%%%%%%%%%%%%%%%%%%%%%%##########%#%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%############################%#######################*******************+*++--=++++++++++*#*+*+++++++**********#************************+:.:::::::::::::::::::::::...................                                    .--:::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------==--:::::::::::::::::::::::::::::::::::::::.                                                                                   ...............................::-==++==--::.......................................        .................................................................................................................................:::::::::.........................................:::--------:::...................................................:::----::::::------=====================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................::--==++++++++++++++++++++++++++==--::....................::::::::..................................::::::::::::::::::::...............................................::::::....................................................................................................................................::::.....................................................................................................:::--=========================---:::...............................:::---====================--:::................................::::::::::::::------::::::::................................................................................:::::::::::::::...............................................................................:::--==+++++++++++++++++++++++++==--::::......::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************###############################################**************##########################**********###############################################*********************##############################***************########################################################################################################################################################################################################################################################################################################################################################***************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========----------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::........................................................................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=:......::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::----------------------------------=================----------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::.................................................................................=%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++*****#########%%%%%%%%%%#=#%-+%%%%%%%%%%%%%%%%%%%%%%%############%@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%############################%#######################******************++**+-=+++++++++++*#*+*++++++**********##*********************++=::::::::::::::::::::::::::::..................                                     -::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::::::.                                                                                       .........................::--==+++=--::.......................................        ..................................................................................................................................::::::::.........................................:::--------:::...................................................:::-----:::::------=====================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::............................::--==+++++++++++++++++++++++++++==--::....................:::::::::.................................::::::::::::::::::::...............................................:::::.......................................................................................................................................::.....................................................................................................:::--=========================---:::...............................:::--=====================--:::................................::::::::::::::::::--:::::::.................................................................................:::::::::::::::...............................................................................:::--==+++++++++++++++++++++++++==--::::.....:::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************##################################################*****************#########################***********##############################################*********************##############################****************########################################################################################################################################################################################################################################################################################################################################################***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::..........................................................................=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=:....::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::----------------------------------=================----------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::.................................................................................:%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++*****########%%%%%%%%%%%%*=#%-*%%%%%%%%%%%%%%%%%%%%%%%#############@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%#######################******************+++*+-++++++++++++*#*+*++++++**********#**********************+=::::::::::::::::::::::::::::::.................                                      ::::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------::::::::::---=-----:::::::::::::::::.                                                                                        ........................::--==+++=--::.......................................        ...................................................................................................................................::::::..........................................:::--------:::...................................................:::-----:::::------=====================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::............................::-==+++**+++++++++++++++++++++++==--::....................:::::::::.................................::::::::::::::::::::...............................................:::::.......................................................................................................................................:......................................................................................................:::--==========================--:::..............................::::--====================---:::................................:::::::::::::::::::::::::::.................................................................................::::::--:::::::................................................................................::--==+++++++++++++++++++++++++==--::::....:::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************####################################################*****************#########################***********##############################################*********************##############################****************########################################################################################################################################################################################################################################################################################################################################################***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========--------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::............................................................................=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=:..::::----------------------------------:::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::----------------------------------=================----------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::.................................................................................:#%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++*****######%%%%%%%%%%%%%%%*=#%-*%%%%%%%%#=###%%%%%%%%%%#####%####%##%@@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%#########################*****************++**==++++++++++++****++++++**********##*********************+=:::::::::::::::::::::::::::::::::................                                      ::::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=----------------===------::::::::::::::::..                                                                                       ........................::--==+++==-:::......................................        .....................................................................................................................................:::...........................................:::--------:::....................................................::------:::------=--===================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........................::-==++****+++++++++++++++++++++++==--::...................::::::::::................................::::::::::::::::::::::..............................................:::::..............................................................................................................................................................................................................................................:::--==========================---:::.............................:::---====================---:::................................::::::::::::::::----:::::::................................................................................:::::::--:::::::................................................................................::--==+++++++++++++++++++++++++==--:::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************######################################################*******************#########################**********##############################################*********************###############################***************########################################################################################################################################################################################################################################################################################################################################################****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++==========---------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.............................................................................:+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%+-::::----------------------------------::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::----------------------------------=================----------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::..................................................................................*%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++*****#######%%%%%%%%%%%%%%%%#+#%-*%%%%%%%%-.+%#%%%%%%%%%%#############%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%#########################*****************++*+==++++++++++++*****++++***********##********************+=:::::::::::::::::::::::::::::::::::...............                                       :::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=----------------===--=---:::::::::::::::::.                                                                                        .......................::--==+++==-::.......................................        ...................................................................................................................................................................................:::--------:::....................................................::------------------===================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........................::-=+++****+++++++++++++++++++++++==--::........::........:::::::::::................................::::::::::::::::::::::.............................................::::::..............................................................................................................................................................................................................................................:::---=========================---:::.............................:::--=====================---:::................................::::::::::::::::::::::::::.................................................................................:::::::--:::::::................................................................................:::-==+++++++++++++++++++++++++==--:::::::::::---===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************#########################################################*******************#########################**********##############################################*********************###############################***************########################################################################################################################################################################################################################################################################################################################################################*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++=============---------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::................................................................................:-+#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+=-----------------------------------:::::------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::----------------------------------=================----------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::..................................................................................=%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++*****######%%%%%%%%%%%%%%%%%%#*#%-#%%%%%%%%:.:%%#%%%%%%%%%#%#######%#%##@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%#########################*****************++*+++++++++++++++******+++***********#********************+=:::::::::::::::::::::::::::::::::::::...............                                      .:::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=----=----==---====--===--:::::::::::::::::.                                                                                          .....................::--==+++==-::.......................................        ...................................................................................................................................................................................:::--------:::....................................................::------------------===================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........................::-==+******+++++++++++++++++++++++==-::......:::::::::....:::::::::::................................::::::::::::::::::::::.............................................:::::...............................................................................................................................................................................................................................................:::---==========================--:::............................:::---=====================---:::................................::::::::::::::::::::::::::..................................................................................:::::::::::::::................................................................................:::--=+++++++++++++++++++++++++==--::::::::-----===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************##############################################################*******************########################************#############################################*********************###############################***************########################################################################################################################################################################################################################################################################################################################################################******************************************************++++++++++++++++++++++++++++++++++++++++++++++++==============----------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.........................................................................................:-+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+=------=-----------------------::::::-----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::..:::::----------------------------------================-----------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::..................................................................................-%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%*+++++++++++++++++++++++++++++++++++******#####%%%%%%%%%%%%%%%%%%%%%#%%-#%%%%%%%%:.:#%#%%%%%%%%%%%######%%#%%#%@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%##########################****************++*+++++++++++++++******++***********##*******************+--::::::::::::::::::::::::::::::::::::::..............                                       .::::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------=---------====--===--::::::::::::::::::.                                                                                          ....................::--==+++==-::.......................................        ...................................................................................................................................................................................:::--------:::....................................................::------------------===================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........................::-=++******+++++++++++++++++++++++==-::......:::::::::::::::::::::::::...............................::::::::::::::::::::::.............................................:::::................................................................................................................................................................................................................................................::---==========================---::............................:::---=====================---:::................................:::::::::::::::::::::::::...................................................................................:::::::::::::::................................................................................:::--=+++++++++++++++++++++++++===---:::------====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************##################################################################******************########################************#############################################**********************##############################***************########################################################################################################################################################################################################################################################################################################################################################******************************************************+++++++++++++++++++++++++++++++++++++++++++++++=============------------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.........................................................................................-#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#++==--------------------------:::::::--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::..:::::----------------------------------===============------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::..................................................................................:%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#%#*+++++++++++++++++++++++++++++++++******#####%%%%%%%%%%%%%%%%%%%%%%*%%=#%%%%%%%%:..#%#%%%%%%%%%%%######%%#%%#%@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%##########################***************++**+++++++++++++++*#*****************##******************+--::.::::::::::::::::::::::::::::::::::::::.............                                       .:::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------==---=======----=--::::::::::::::::::..                                                                                         ....................::--=++++==-::.......................................         ..................................................................................................................................................................................:::--------:::....................................................::-------------------==================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........................:-==+*******+++++++++++++++++++++++=--::......:::::::::::::::::::::::::...............................::::::::::::::::::::::.............................................:::::................................................................................................................................................................................................................................................:::--==========================---:::...........................:::--======================---:::................................:::::::::::::::::::::::::...................................................................................:::::::::::::::................................................................................:::--=++++++++++++++++++++++++++==---------======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************#########################################################################******************########################************#############################################**********************##############################***************#######################################################################################################################################################################################################################################################################################################################################################********************************************************+++++++++++++++++++++++++++++++++++++++++++++==========----------------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.........................................................................................:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++==------------------------::::::::----------------------------------------:::::::::::::::::::::::::::::::::::::::::::...:::::-----------------------------------==============------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::...................................................................................*%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#++++++++++++++++++++++++++++++++******####%%%%%%%%%%%%%%%%%%%%%%%%#%%+#%%%%%%%%:..*%#%%%%%%%%%%%%#%%%%%%%###%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%##########################***************++**+++++++++++++++*#*****************#******************+-::::.:::::::::::::::::::::::::::::::::::::::............                                        ::::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::-:::::::::::::::::::-----------------------------=====-----:::::::::::::::::::.                                                                                          ...................::-==++++==-::.......................................         ..................................................................................................................................................................................:::--------:::....................................................::-------------------==================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........................::-=++******+++++++++++++++++++++++==--::.....:::::::::::::::::::::::::::..............................::::::::::::::::::::::.............................................:::::................................................................................................................................................................................................................................................:::--===========================--:::..........................:::---======================---::..................................:::::::::::::::::::::::.....................................................................................:::::::::::::.................................................................................:::--==+++++++++++++++++++++++++===------======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************###############################################################################******************########################************#############################################**********************##############################***************###################################################################################################################################################################################################################################################################***#################################################################################*********************************************************++++++++++++++++++++++++++++++++++++++++++++========------------------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.........................................................................................:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+++=-----------------------::::::::::::::::::::----------------------------------::::::::::::::::::::::::::::::::::::::...:::::-----------------------------------==============------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::...................................................................................=%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++*****#####%%%%%%%%%%%%%%%%%%%%%%%%%#%#*%%%%%%%%%:..+%%%%%%%%%%%%%%%%%%%%#%####@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%##########################***************++***++++++++++++++******************##******************=::::..::::::::::::::::::::::::::::::::::::::::............                                        :::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------=---=----===============-:::::::::::::::::::...                                                                                         ..................::-==++++==-::.......................................         ..................................................................................................................................................................................::---------::.....................................................::-------------------==================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........................:--=+*******+++++++++++++++++++++++==--::.....:::::::::::::::::::::::::::..............................::::::::::::::::::::::.............................................:::::................................................................................................................................................................................................................................................:::---==========================--:::.........................::::--=======================--:::..................................::::::::::::::::::::::......................................................................................::::::::::::...................................................................................::--==++++++++++++++++++++++++++===----=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************######################################################################################*****************########################************#############################################***********************#############################***************#################################################################################################################################################################################################################################################################*******###############################################################################**********************************************************++++++++++++++++++++++++++++++++++++++++++========-------------------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.........................................................................................-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@%++++=----------------------:::::::::::::::::::::----------------------------------:::::::::::::::::::::::::::::::::::::...:::::-----------------------------------==============------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::...................................................................................-%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++******####%%@%%%%%#%%%%%%%%%%%%%%%%%%#%#*%%%%%%%%%:..-%#%%@%%%%%%%%%%%%%%##%#%##%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%###########################**************+++**++++++++++++++******************#****************#*+-:::.::::::::::::::::::::::::::::::::::::::::::::..........                                         :::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::--:::::::::::::::::::------------==--=-------============--:::::::::::::::::::...                                                                                         .................::-==++++==-::.......................................         ..................................................................................................................................................................................::---------::.....................................................::-------------------==================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........................:-==+*******+++++++++++++++++++++++==-:::.....:::::::::::::::::::::::::::...............................:::::::::::::::::::::.............................................::::.................................................................................................................................................................................................................................................:::---==========================---::.........................:::---=======================--:::..................................:::::::::::::::::::::........................................................................................:::::::::::...................................................................................::--==++++++++++++++++++++++++++====--=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************#########################################################################################*****************########################************#############################################***********************#############################***************################################################################################################################################################################################################################################################################********##############################################################################************************************************************++++++++++++++++++++++++++++++++++++++++========--------------------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::........................................................................................:+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++=----------------------::::::::::::::::::::::::::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::...:::::-----------------------------------==============-------------------------:::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::....................................................................................:#%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++******###%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%:..-%#%%%%%%%%%%%%%%%%##%%#%%#%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%##########################**************++***++++++++++++++*#********************************##+=:::.::::::::::::::::::::::::::::::::::::::::::::::..........                                        .::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::--:::::::::::::::::::-----------===----------=-========---::::::::::::::::::::...                                                                                         ................::-==++++==-::.......................................         ..................................................................................................................................................................................::---------::.....................................................::------------------===================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::........................::-=++*******+++++++++++++++++++++++==-::......::::::::::::::::::::::::::::..............................:::::::::::::::::::::..............................................::...................................................................................................................................................................................................................................................::---===========================--:::........................:::--========================--:::..................................::::::::::::::::::::..........................................................................................::::::::.....................................................................................:::-==++++++++++++++++++++++++++====-=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************################################################################################################******************#######################***********##############################################************************###########################****************################################################################################################################################################################################################################################################################***+++***#############################################################################*************************************************************+++++++++++++++++++++++++++++++++++++++=======---------------------------------------------------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::........................................................................................#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++=--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::-----------------------------------==============-------------------------:::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::.....................................................................................*%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++*******##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*#%%%%%%%%%-..-%#%%%%%%%%%%%%%%%%#####%##%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%###########################**************+****++++++++++++++*#********************************#*+-::..:::::::::::::::::::::::::::::::::::::::::::::::.........                                         :::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::--::::::::::::::::::-----------===---------==-========--:::::::::::::::::::::.....                                                                                       ................::-==++++==-::.......................................         ..................................................................................................................................................................................::---------::.....................................................::------------------===================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::........................::-=+*******++++++++++++++++++++++++==-::......::::::::::::::::::::::::::::...............................::::::::::::::::::::..............................................::...................................................................................................................................................................................................................................................:::--===========================--:::.......................:::---========================--:::..................................:::::::::::::::::::.............................................................................................:::::......................................................................................:::-==++++++++++++++++++++++++++===----====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************######################################################################################################******************#######################***********##############################################************************###########################****************###############################################################################################################################################################################################################################################################***++++***#############################################################################*************************************************************+++++++++++++++++++++++++++++++++++++++=======---------------------------------------------------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::........................................................................................:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++=--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::-----------------------------------==============-------------------------:::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::.....................................................................................=%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%*++++++++++++++++++++******##%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*#%%%%%%%%%-..:##%%%%%%%%%%%%%%%%########%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%############################*************+****++++++++++++++*#*******************************##*=::..:::::::::::::::::::::::::::::::::::::::::::::::::.........                                         ::::::::::-----------------::::::::::::::::::::::::::::::::::::-::::::-:::::::::::::::::::----------=-=-----===-==-=========-:::::::::::::::::::::......                                                                                       ...............::-==++++==-::.......................................         ..................................................................................................................................................................................::---------::.....................................................::------------------===================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::........................::-=+*******++++++++++++++++++++++++=--::......:::::::::::::::::::::::::::::...............................::::::::..:::::::::...................................................................................................................................................................................................................................................................................................:::--===========================--:::.......................:::--=========================--:::...................................:::::::::::::::::................................................................................................::.......................................................................................:::--=++++++++++++++++++++++++++==------===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************###########################################################################################################******************#######################***********##############################################*************************##########################****************###############################################################################################################################################################################################################################################################***+++++***############################################################################**************************************************************++++++++++++++++++++++++++++++++++++++======----------------------------------------------------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::........................................................................................#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+++=-------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::-----------------------------------==============-----------------------:::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::.....................................................................................-%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#++++++++++++++++++****###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*#%%%%%%%%%-..:##%%%%%%%%%%%%%%%%#########%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%############################******************++++++++++++++*#*******************************#*+-:..:::::::::::::::::::::::::::::::::::::::::::::::::::.........                                        .:::::::::------------------::::::::::::::::::::::::::::::::::::-:::::--::::::::::::::::::------------=-----================-::::::::::::::::::::::......                                                                                       ..............::-==++++==-::.......................................         ..................................................................................................................................................................................::---------::.....................................................::-------------------==================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------::::::---------------------------------------------------------------:::........................:-==+*******++++++++++++++++++++++++=--::......:::::::::::::::::::::::::::::.................................:::......::::::::...................................................................................................................................................................................................................................................................................................:::--===========================---::......................:::---========================---:::...................................:::::::::::::::::.........................................................................................................................................................................................:::--==+++++++++++++++++++++++++==-------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************###################################################################################################################*******************######################***********##############################################**************************#########################****************###############################################################################################################################################################################################################################################################***+++++***############################################################################***************************************************************+++++++++++++++++++++++++++++++++++++=======---------------------------------------------------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................................................................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++=-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::-----------------------------------=============------------------------:::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::.....................................................................................:#%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#%%#*+++++++++++++++***##%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*#%%%%%%%%%-..:#%#%%%%%%%%%%%%%%%%########%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%#############################*****************++++++++++++++*#******************************##+=::..::::::::::::::::::::::::::::::::::::::::::::::::::::........                                         ::::::::::------------------::::::::::::::::::::::::::::::::::::-:::::-:::::::::::::::::::-----------=-----===============--:::::::::::::::::::::::......                                                                                        ............::-==++++==-::.......................................         ..................................................................................................................................................................................::---------::.....................................................::-------------------==================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------:::::::::------------------------------------------------------------:::........................:-=++*******+++++++++++++++++++++++==--::......::::::::::::::::::::::::::::::.........................................:::::::::..................................................................................................................................................................................................................................................................................................:::--============================--:::.....................:::--=========================---:::....................................:::::::::::::::...........................................................................................................................................................................................::--==+++++++++++++++++++++++++==-------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************#######################################################################################################################*******************#######################***********#############################################*********************************##################****************###############################################################################################################################################################################################################################################################**++++++***###########################################################################*****************************************************************++++++++++++++++++++++++++++++++++++========--------------------------------------------------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.........................................................................::-==+++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++=------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::-----------------------------------=============------------------------:::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::.......................................................................................*%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#*++++++++++++***##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%=..:#%#%%%%%%%%%%%%%%%%%%######%@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%############################*****************++++++++++++++*#*****************************##*+-:...:::::::::::::::::::::::::::::::::::::::::::::::::::::.........                                        :::::::::--------------------:::::::::::::::::::::::::::::::::::-:::::-::::::::::::::::::-----------=------=---==========-:::::::::::::::::::::::::.......                                                                                        ..........::-==++++=--::.......................................         ..................................................................................................................................................................................::---------::.....................................................::--------------------================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------:::::::::-----------------------------------------------------------:::.......................::-=++*******+++++++++++++++++++++++==-:::......::::::::::::::::::::::::::::::.........................................:::::::::..................................................................................................................................................................................................................................................................................................:::---===========================--:::....................:::---=========================---:::....................................:::::::::::::::...........................................................................................................................................................................................::--==+++++++++++++++++++++++++==---:---==++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************#####################################################################################################################################********************######################***********#############################################***********************************###############*****************###############################################################################################################################################################################################################################################################**+++++++**###########################################################################******************************************************************++++++++++++++++++++++++++++++++++==============------==============================---------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.....................................................................:+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*++=-----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::-----------------------------------==========--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::.......................................................................................=%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%%%%%#*+++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=...#%#%%%%%%%%%%%%%%%%%%######%@@@@@@@%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%#############################*****************++++++++++++++*#*****************************##+=-...:::::::::::::::::::::::::::::::::::::::::::::::::::::::.........                                       .:::::::::--------------------::::::::::::::::::::::::::::::::::--::::--::::::::::::::::::-------=--=--=-------=====-====-::::::::::::::::::::::::::.......                     .........                                                           ........::-==++++=--::.......................................         ..................................................................................................................................................................................::---------::.....................................................::--------------------================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------:::::::::----------------------------------------------------------:::.......................::-=+*******++++++++++++++++++++++++==-::......:::::::::::::::::::::::::::::::::.......................................:::::::::...................................................................................................................................................................................................................................................................................................::---===========================--:::....................:::---=========================---:::.....................................:::::::::::::............................................................................................................................................................................................::--==+++++++++++++++++++++++++==-------==+++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************###############################################################################################################################################*******************######################***********#############################################************************************##############*****************###############################################################################################################################################################################################################################################################**+++++++**##########################################################################********************************************************************+++++++++++++++++++++++++++++++++=====================================================------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::...............................................::::::............-#@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++-----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::-----------------------------------==========--------------------------::::::::::::::::::::::::::::::::::::::::::::::-:::--------------------------------------------------------------------------------------:::::::::::::::.......................................................................................:%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*****##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%##=...#%#%#%%%%%%%%%%%%%%%%#%%###%@@@@@@@%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%#############################*****************++++++++++++++*#****************************##*+-::..::::::::::::::::::::::::::::::::::::::::::::::::::::::::........                                        :::::::::--------------------:::::::::::::::::::::::::::::::::::--::::-::::::::::::::::::--=--===--=--=-------=====-===--:::::::::::::::::::::::::::......                   ..............                                                         .......::-==++++=--::.......................................         ..................................................................................................................................................................................::---------::.....................................................::--------------------===-============================================================================================================--------------------------------------------------------------------------------------------------------------------------------------:::::::::----------------------------------------------------------:::.......................::-=+*******++++++++++++++++++++++++==-::.....:::::::::::::::::::::::::::::::::::......................................:::::::::...................................................................................................................................................................................................................................................................................................:::--===========================---::...................::::--==========================---:::......................................:::::::::::.............................................................................................................................................................................................:::-==+++++++++++++++++++++++++==-------==+++++++++++++++++++++++++++++++++++++++++++++++++++++***********************########*#######################################################################################################################################################*******************######################***********##############################################***********************************###############****************###############################################################################################################################################################################################################################################################***++++++**#########################################################################**********************************************************************+++++++++++++++++++++++++++++++++====================================================--==--------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.............................................::::::::::.........%@@@@@%%%%%%%@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*++=----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::------------------------------------==========---=-----------------------:::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::........................................................................................*%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+...#%#%%%%%%%%%%%%%%%#%##%####%@@@@@@%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%#############################****************++++++++++++++*#****************************##*=-::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........                                       ::::::::::---------------------::::::::::::::::::::::::::::::::::-:::::-:::::::::::::::::-------==--=----------=========:::::::::::::::::::::::::::::......                  .................                                                         ....::-==+++==--::.......................................         ..................................................................................................................................................................................::---------::.....................................................::----------------------==============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------:::::::-----------------------------------------------------------:::.......................:--=+*******++++++++++++++++++++++++==-::......:::::::::::::::::::::::::::::::::::.....................................:::::::::...................................................................................................................................................................................................................................................................................................:::--===========================---::...................:::---==========================---::........................................:::::::::..................................................................:...........................................................................................................................:::-==++++++++++++++++++++++++++==-----===+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************##################################################################################################################################################################*******************######################***********##############################################*************************************###########*******************##############################################################################################################################################################################################################################################################***++++++**#########################################################################***********************************************************************++++++++++++++++++++++++++++++++======================================================----------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::...........................................:::::::::::::::....:%@@@@%%%%%%%@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%++=----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::------------------------------------==========--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::........................................................................................+%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%##%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+...#%#%%%%%%%%%%%%%%%%%##%####%@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%#############################*****************+++++++++++++*#***************************##*+=:.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........                                       -::::::::---------------------:::::::::::::::::::::::::::::::::::-::::--:::::::::::::::::-==-=------==--------=========:::::::::::::::::::::::::::::.......                  ...................                                                      ....::-==+++==-::........................................         ..................................................................................................................................................................................::---------::.....................................................::----------------------==============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------:::::::-----------------------------------------------------------:::.......................:-==+*******+++++++++++++++++++++++==--::.....:::::::::::::::::::::::::::::::::::::....................................:::::::::...................................................................................................................................................................................................................................................................................................:::--===========================---:::..................:::--===========================--:::..........................................:::::....................................................................:...........................................................................................................................:::-==++++++++++++++++++++++++++====-====++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************####################################################################################################################################################################*******************######################************#############################################*************************************###########*******************##############################################################################################################################################################################################################################################################***++++++**########################################################################************************************************************************++++++++++++++++++++++++++++++++=======================================================---------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::..........................................::::::::::::::::....%@@@@@%@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*++----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::------------------------------------==========-------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::........................................................................................-%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#%%%%##+...#%#%%%%%%%%%%%%%%%%%##%####%@@@@@@@%%@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%##############################****************+++++++++++++*#***************************##*=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........                                      .-::::::::---------------------::::::::::::::::::::::::::::::::::--::::--:::::::::::::::::-=--=------=--------===-=====:::::::::::::::::::::::::::::::......                  .....................                                                   ....::-==+++==-::........................................         ..................................................................................................................................................................................::---------::.....................................................::-----=---------------===============================================================================================================----------------------------------------------------------------------------------------------------------------------------------------:--::------------------------------------------------------------:::.......................:-=++*******+++++++++++++++++++++++==--::.....::::::::::::::::::::::::::::::::::::::...................................:::::::::...................................................................................................................................................................................................................................................................................................:::---===========================--:::.................:::---===========================--:::...................................................................................................................:...........................................................................................................................:::--=+++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************#####################################################################################################################################################################*******************######################*************############################################*************************************###########*******************##############################################################################################################################################################################################################################################################***++++++**########################################################################*************************************************************************+++++++++++++++++++++++++++++++========================================================--------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.........................................:::::::::::::::::...=@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%++=---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::------------------------------------=========------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::........................................................................................-%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#%%#%%#*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#%%#%##*...#%##%%%%%%%%%%%%%%%%##%####%@@@@@@@%%@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%################################****************+++++++++++++*#**************************###+=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........                                      --:::::::----------------------::::::::::::::::::::::::::::::::::--:::---:::::::::::::::::-=-=---------------=----====::::::::::::::::::::::::::::::::......                   ......................                                                ....::-==+++==-::........................................         ..................................................................................................................................................................................::---------::....................................................:::----====-------------===============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::......................::-=++******++++++++++++++++++++++++==--::....::::::::::::::::::::::::::::::::::::::::::................................:::::::::...................................................................................................................................................................................................................................................................................................:::---===========================---::.................:::--============================--:::...................................................................................................................::..........................................................................................................................:::--=+++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************############################%%%%%%####################################################################################################################################*******************######################*************############################################************************************############*******************##############################################################################################################################################################################################################################################################***++++++**######################################################################***************************************************************************++++++++++++++++++++++++++++++++========================================================-------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.........................................:::::::::::::::::...@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+=---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-----------------------------------==========---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------:::::::::::::::.........................................................................................-#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%#%##*...#%#%%%%%%%%%%%%%%%%%##%####%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%##################################****************++++++++++++*#**************************##*=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........                                     =-:::::::----------------------::::::::::::::::::::::::::::::::::-::::--:::::::::::::::::--=----------------------===:::::::::::::::::::::::::::::::::......                   ........................                                             ....::-==+++==-::........................................         ..................................................................................................................................................................................::---------::....................................................:::----======-----------===============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::......................::-=+*******++++++++++++++++++++++++==--::....::::::::::::::::::::::::::::::::::::::::::::::...........................::::::::::....................................................................................................................................................................................................................................................................................................:::--===========================---::.................:::--============================--:::...................................................................................................................::..........................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************########################%%%%%%%%%%%%%##################################################################################################################################*******************######################*************############################################************************************############*******************##############################################################################################################################################################################################################################################################***++++++**####################################################################******************************************************************************+*+++++++++++++++++++++++++++++========================================================-------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................::::::::::::::::::::.+@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-----------------------------------==========-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------:::::::::::::::.........................................................................................-#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%%%*#+...*%%%%%%%%%%%%%%%%%%%%##%###%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%##################################****************++++++++++++*##************************###+=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........                                   :==-:::::-----------------------::::::::::::::::::::::::::::::::::-::::--:::::::::::::::::---==-------------------===::::::::::::::::::::::::::::::::::......                    .........................                                          ....::-==+++==-::....... ................................         ..................................................................................................................................................................................::---------::....................................................:::---========----------===============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::......................::-=+*******++++++++++++++++++++++++==--::....::::::::::::::::::::::::::::::::::::::::::::::::.........................::::::::::..............................................................................................................................................................................................:.....................................................................................................:::--============================--:::...............:::---===========================---:::...................................................................................................................:::.........................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************########################%%%%%%%%%%%%%%####################################################################################################################################*******************#####################*************############################################***********************************#############*******************##############################################################################################################################################################################################################################################################***++++++**###################################################################**********************************************************************************+++++++++++++++++++++++++++++=======================================================-------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.......................................:::::::::::::::::::::@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-----------------------------------=========-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:--------------------------------------------------------------------------------------:::::::::::::::.........................................................................................:#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+#+...#%#%%%%%%%%%%%%%%%%%%%#%####@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%##################################*****************+++++++++++*##************************##*=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............                                  ===--::::-----------------------:::::::::::::::::::::::::::::::::--:::---::::::::::::::::::--==-------------------==:::::::::::::::::::::::::::::::::::......                    ..........................                                        ....:--==+++==-::....       .............................         ..................................................................................................................................................................................::---------::....................................................:::---=========---------===============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::......................::-=+*******++++++++++++++++++++++++==-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................::::::::::...........................................................................................................................................................................................::::::::.................................................................................................:::---===========================--:::...............:::--============================---:::...................................................................................................................:::.........................................................................................................................:::--==+++++++++=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************##########################%%%%%%%%%%%%######################################################################################################################################*******************#####################*************############################################**********************************##############********************#############################################################################################################################################################################################################################################################***++++++***#################################################################************************************************************************************+++++++++++++++++++++++++++++======================================================-------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.......................................::::::::::::::::::::-@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-----------------------------------=========-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:--------------------------------------------------------------------------------------:::::::::::::::.........................................................................................:*####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+#=...#%##%%%%%%%%%%%%%%%%%%####%#@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%###################################*****************+++++++++**##***********************###*=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........                                  :+=+-::::-----------------------::::::::::::::::::::::::::::::::::--:::---::::::::::::::::::-----=-----------------=:::::::::::::::::::::::::::::::::::.......                     .........................                                       ....:--==+++==-::....          ..........................         ..................................................................................................................................................................................::---------::....................................................::----=========---------===============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::......................:--=+*******++++++++++++++++++++++++==-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............::::::::::.........................................................................................................................................................................................:::::::::::................................................................................................:::---===========================---:::.............:::---============================---:::...................................................................................................................:::.........................................................................................................................::::-===++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##################################%%%%%%%########################################################################################################################################*******************#####################*************#############################################*********************************##############********************##############################################################################################################################################################################################################################################################**++++++***################################################################*************************************************************************************+++++++++++++++++++++++++++++=====================================================--------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::......................................:::::::::::::::::::::%@@@*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::------------------------------------=======--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------:::::::::::::::.........................................................................................:*####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#-#-...##%#%#%%%%%%%%%%%%%%%%%%####@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%###################################*****************++++++++++*##***********************###=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............                                 =++=-::::-----------------------::::::::::::::::::::::::::::::::::-:::----:::::::::::::::::::-==-----=------------=::::::::::::::::::::-----:::::::::::.......                      ..........................                                    ....:--=++++==-::....           ........................           .................................................................................................................................................................................::---------::...................................................:::----========---------================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::......................:-==+*******++++++++++++++++++++++++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........:::::::::::::.......................................................................................................................................................................................::::-----::::................................................................................................::---============================--:::.............:::---============================---::...................................................................................................................::::..........................................................................................................................:::--==++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##################################################################################################################################################################################*******************#######################************#############################################*********************************###############*******************##############################################################################################################################################################################################################################################################**++++++***##############################################################***************************************************************************************++++++++++++++++++++++++++++++=====================================================-------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.......................................::::::::::--::::::::-@@@##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::------------------------------------=======---------------------::::::::::::::::::::::::::::::::::::::::::::---:---::------------------------------------------------------------------------------------------:::::::::::::::.........................................................................................:+####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%#-#-..:#%%##%#%%%%%%%%%%%%%%%%%####@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%###################################*******************++++*++**##**********************###*=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............                                :+=+=::::------------------------::::::::::::::::::::::::::::::::::-:::---::::::::::::::::::::--------------------=::::::::::::::::::::------:::::::::::......                        .........................                                   ...::-==++++==-::....             ......................           .................................................................................................................................................................................::---------::...................................................:::----========--------=================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.......................:-==+*******++++++++++++++++++++++++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........::::::::::::::.......................................................................................................................................................................................:::--------:::...............................................................................................::---============================---:::............:::--=============================--:::...................................................................................................................::::..........................................................................................................................:::--=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#####################################################################################################################################################################################******************#######################*************############################################***********************************#############*******************#############################################################################################################################################################################################################################################################***++++++***############################################################******************************************************************************************++++++++++++++++++++++++++++++======================================================-----------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::::::::::::::::::::+@@@*%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::-------------------------------------======-----------------------:::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------::::::::::::::::.........................................................................................+####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*=#:..:#%###%##%%%%%%%@%%%%%%%%####@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%####################################***************************##**********************###=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............                                =+++-::::-------------------------:::::::::::::::::::::::::::::::::-::----::::::::::::::::::::-=-----------------=:::::::::::::::::::---------:::.::::::......                        .........................                                  ...::-==++++==-::....                     ............             .................................................................................................................................................................................::---------::...................................................:::----========-------==================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.......................::-=++*******+++++++++++++++++++++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......::::::::::::::::......................................................................................................................................................................................:::---====---::...............................................................................................:::--=============================--::::..........:::---=============================--:::...................................................................................................................::::..........................................................................................................................:::---===============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#######################################################################################################################################################################################******************#######################*************############################################************************************###########********************#############################################################################################################################################################################################################################################################***++++++***########################################################***********************************************************************************************+++++++++++++++++++++++++++++++=======================================================--------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................::::::::-::::::--::::*@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::-------------------------------------======-----------------------------::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------:::::::::::::::::........................................................................................=%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+=#...-%%#%#%%#%%%%%%%%%%%%%%%%%###@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%####################################***************************##*********************###*=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............                               :+=+=::::---------------------------:::::::::::::::::::::::::::::::--::----::::::::::::::::::::-------=----------=-::::::::::::::::::----------:::..:::::......                        ............................                              ...::-==++++==-::...                       ..........              .................................................................................................................................................................................::---------::...................................................::----=========-------==================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::........................::-=+********+++++++++++++++++++++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........::::::::::::::::......................................................................................................................................................................................::--=======--:::..............................................................................................:::---============================---::::.........:::--==============================--:::......................................................................................:::::........................::::..........................................................................................................................:::---===============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########################################################################################################################################################################################******************#######################*************############################################*************************************##########********************#############################################################################################################################################################################################################################################################***++==+++**#####################################################**************************************************************************************************+++++++++++++++++++++++++++++++++=====================================================--------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::::::::::-::::::--+@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::----------------------------------------===-------------------------------------::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------:::::::::::::::::::......................................................................................=%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+*%%%%%%%%%%%%%%#%%%%%%%%%%%%%%#%#%%=+#...-%%%###%##%%%%%%%%%%%%%%%%###@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%####################################***************************##***#*****************##*+--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............                               =+++-::::----------------------------::::::::::::::::::::::::::::::-::----:::::::::::::::::::::--==--==---------=-::::::::::::::::::----------:::...:::::......                          ...........................                           ....::-==++++=--::...                        ....  ..               .................................................................................................................................................................................:::--------::..................................................:::----========---------=================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........................::-=+********+++++++++++++++++++++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........::::::::::::::.....................................................................................................................................................................................:::--========--::..............................................................................................:::---=============================---::::........:::--==============================--:::...................................................................................:::::::::::.....................::::.........................................................................................................................::::----=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################################################################################################################################******************#######################*************############################################*************************************##########********************############################################################################################################################################################################################################################################################***+++==+++**#################################################*******************************************************************************************************++++++++++++++++++++++++++++++++++======================================================-----------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.....................................::::::::::::::---+#%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::----------------------------------------------------------------------------------:::::::::::::::::::::::----------------------====-------------------------------------------------------------------------------:::::-----::::::::::...................................................................................=%#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%--%%%%%%%%%%%%%%#%%%%%%%%%%%%%%#%#%%-*#...=%%%#%##%+#%%%%%%%%%%%%%%%###@@@@@@@%%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%####################################***************************##***#****************###*=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................                             .+++=::::-----------------------------:::::::::::::::::::::::::::::--::----::::::::::::::::::::--==-------------=-::::::::::::::::::------------::..::::::......                           ...........................                         ....::-==++++=--:....                  ..                           ..........................................................................................................................................:::::::................................:::--------::..................................................:::----========---------=================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.........................::-=+*******++++++++++++++++++++++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::::::::::::.....................................................................................................................................................................................:::-====+++===--::..............................................................................................::---==============================---:::.......:::---==============================--:::......................................................................::..........:::::::::::::....................::::........................................................................................................................:::::---============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########################################################################################################################################################################################******************#######################*************############################################**************************************#########********************###########################################################################################################################################################################################################################################################****+++===++**#########################################***************************************************************************************************************+++++++++++++++++++++++++++++++++++======================================================----------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.....................................::::::::-::--+#%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::-----------------------------------------------------------------------------------::::::::::::::::::::::--------------------======-----------------------------------------------------------------------------------------------:::::..................................................................................=%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%--%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%#%#:##...*%%######=#%%%%##%%%%%%%%%###@@@@@@@%%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%#####################################**************************##**##****************###+=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................                             =+=+-::::-----------------------------:::::::::::::::::::::::::::::--:-----::::::::::::::::::::--=---------------::::::::::::::::::-------------::..::::::.....                             ..........................                        ....::-==+++==--:....                                                .......................................................................................................................................:::::::::::::::..........................:::--------::..................................................:::----========--------==================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........................::-=+*******++++++++++++++++++++++++==--:::............:::::::::::::::::::::::::::::::::::::::::::::::.................::::::::::::.....................................................................................................................................................................................::--===+++++==--::..............................................................................................:::--===============================---:::......:::---=============================---:::.....................................................................:::::......:::::-------::::...................::::......................................................................................................................::::::---=======+++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++***##########################################################################################################################################################################################******************#######################*************############################################*****************************************#####*********************###########################################################################################################################################################################################################################################################***+++====++**#############################****************************************************************************************************************************+++++++++++++++++++++++++++++++++++======================================================---------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.....................................:::::::---=*%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::------------------------------------------------------------------------------------:::::::::::::::::::::------------------=========---------------------------------------=========--------------------------------------====------::::.................................................................................=%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%-:%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%#%%#:#*...*%%#%##%#-#%%%%##%%%%%%%%%##%@@@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%######################################*************************##*###***************###*=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................                            :+++=::::------------------------------:::::::::::::::::::::::::::::-------::::::::::::::::::::--=---------------:::::::::::::::::::------------:::.::::::......                             ..........................                       ....::-==+++==--:.....                                               .......................................................................................................................................::::::::::::::::::.......................:::--------::..................................................:::----========-------===================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=-----:::..........................:--=+*******+++++++++++++++++++++++==--::::................::::::::::::::::::::::::::::::::::::::::::...................::::::::::.....................................................................................................................................................................................:::--==++++++===-::..............................................................................................:::--================================--::::.....:::--==============================---:::.....................................................................:::::......:::----===----:::..................::::......................................................................................................................:::::---=====++++++++++++++++++++++++++++++++++++++++++++++++==================++++++++++++++***##########################################################################################################################################################################################*******************######################**************###########################################*********************************#*******#####*********************##########################################################################################################################################################################################################################################################****+++====++**###########################*******************************************************************************************************************************+++++++++++++++++++++++++++++++++++=====================================================---------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.....................................:::::=***#@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::-------------------------------------------------------------------------------------::::::::::::::::::::-----------------==========-------------------------------------===============----------------------------===============---:::...............................................................................:=########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%#:#+...#%#####%#:*%%%%%*%%%%%%%%%###@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%#######################################**********************######**************####+=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................                            =+++-::::-------------------------------:::::::::::::::::::::::::::--------:::::::::::::::::::-----=-=--------=-::::::::::::::::::::::----------:::.::::::......                          ............................                       ....:--==+++==-::....                                                ......................................................................................................................................::::--------::::::::::....................:::--------::.................................................::::----========-------===================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===----::..........................:-==+*******+++++++++++++++++++++++==--:::..................:::::::::::::::::::::::::::::::::::::::.....................::::::::::.....................................................................................................................................................................................:::--==++++++===--::.............................................................................................:::--================================---:::....:::---==============================---::......................................................................:::::.....:::--=========--:::..................:::.....................................................................................................................:::::---====+++++++++++++++++++++++++++++++++++++++++++===============-------=====++++++++++++***##########################################################################################################################################################################################*******************######################**************###########################################*****************************************##************************##########################################################################################################################################################################################################################################################***+++=====++**#########################**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++=======================================================------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::....................................::::+#@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::-------------------------------------------------------------------------------------::::::::::::::::::::------------------=========-----------------------------------=======++==========--------------------==========+++++++++===---:::..............................................................................:=########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+:%%%#%%%%%%%%%%%%%%%%%%%%%%%%#%%##*:%-..:#%#####%*:=%%%%%#%%%%%%%%%###@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%#######################################**********************######*************####*==-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................                            :+++=:::::-------------------------------:::::::::::::::::::::::::::-------:::::::::::::::::::-----=----------=--::::::::::::::::::::::----------::::::::::.....                          ............................                       ....:--=++++==-::....                                                ......................................................................................................................................::::------------::::::::::................:::--------::.................................................:::-----========-------===================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===----::..........................:-=++*******+++++++++++++++++++++++==--:::...................::::::::::::::::::::.::::::::::::::::......................:::::::::......................................................................................................................................................................................:::-===+++++++==--::.............................................................................................:::---================================--::::...:::---==============================--:::......................................................................:::::::.::::--===+++++===--:::.................::.....................................................................................................................:::::----===++++++++++++++++++++++++++++++++++++++++===========-----------------====+++++++++++***##########################################################################################################################################################################################*******************######################**************###########################################*******************************************************************##########################################################################################################################################################################################################################################################***+++=====++***#######################***********************************************************************************************************************************++++++++++++++++++++++++++++++++++++======================================================------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::....................................:-+%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::-------------------------------------------------------------------------------------::::::::::::::::::::-------------------========----------------------------------====++++++++++++======--------------=========+++++++++++++++++==--::..............................................................................:+########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#.#%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%#=-%:..:%%#####%+.-%%%%%##%%%%%%%%%#%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%########################################*********************######************#####+==::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................                           .+++=-::::--------------------------------:::::::::::::::::::::::::::-------:::::::::::::::::::=--=------------=-::::::::::::::::::::::::---------:::::::::......                          .............................                     ....:--=++++==-::.....                                                .....    ............................................................................................................................:::-----------------::::::::::...........:::--------:::.................................................:::----=========------====================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====---::.........................::-=++*******+++++++++++++++++++++++==--::.....................:::::::::::::::........::::::::::::........................::::::::......................................................................................................................................................................................::--==++++++++==--::..............................................................................................:::--================================---::::.::::---==============================--:::......................................................................:::::::::::--==+++++++++==--::..................:.....................................................................................................................:::::----==+++++++++++++++++++++++++++++++++++++=========------------::::::::----=====+++++++++****##########################################################################################################################################################################################*******************#####################**************###########################################*******************************************************************#########################################################################################################################################################################################################################################################***+++======+++**####################****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++======================================================----------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::...................................-*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::---------------------------------------===-------------------------------------------:::::::::::::::::::--------------------=========--------------------------------===++++++****+++++++=====---------========+++++++************++==--::..............................................................................:=#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%.+%%%#%%%%%%%%%%%%%%%%%%%%%%%%##%%-=#:..-%%######=.:#%%%%#*%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%########################################********************######***********#####*-=-::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................                          -+++-:::::---------------------------------:::::::::::::::::::::::::--------::::::::::::::::::=--=-----------==-:::::::::::::::::::::::::---------:::::::::......                            ..........................                     ...::--=++++==-::....                                                 ....       ..........................................................................................................................::::--------------------:::::::::.......::::--------:::.................................................:::----=========------====================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===---:::........................::-=+********+++++++++++++++++++++++==--::.....................:::::::::::::::.........:::::::::::........................:::::::......................................................................................................................................  ...............................................::--==++++++++===-::..............................................................................................:::--=================================--:::::::::--===============================--:::......................................................................:::::::::::--==++++++++++==-:::.......................................................................................................................................:::::----==++++++++++++++++++++++++++++++++=========---------:::::::::::::::::---======+++++++++****#####################################################################################################################################################################**##################*******************#####################**************###########################################********************************************************************########################################################################################################################################################################################################################################################***+++======+++**##################*******************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++=====================================================---------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.................................-*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::--------------------------------------=====-------------------------------------------:::::::::::::::::----------------------========-------------------------------===++++***********+++++================+++++++*****************++=--::...............................................................................=#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%###%%.-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###:*#...=%#####%#-..+%%%%%+%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%#######################################********************#######*********######===-:::---:::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................                          .+++=::::::----------------------------------::::::::::::::::::::::::--------:::::::::::::::::---=-----------=--::::::::::::::::::::::::::---------:::::::::......                           ...  .....................                     ...::--=++++=--::....                                                 ....       ..........................................................................................................................::::-----------------------:::::::::::::::::--------:::.................................................:::---==========------====================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::........................::-=+*******++++++++++++++++++++++++==-:::.....................:::::::::::::::.........:::::::::::.........................:::::.....................................................................................................................................      .........   .................................::--==++++++++===-::..............................................................................................:::--=================================---:::::::---==============================---:::......................................................................::::::::::--==+++*****+++==--::........................................................................................................................................:::::---===+++++++++++++++++++++++++++=========-------::::::::::::::::::::::::---======++++++++*****##################################################################################################################################################################*****#################*******************#####################***************###########################################*******************************************************************########################################################################################################################################################################################################################################################***+++=======++***############*************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++======================================================--------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...............................:*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::--------------------------------------======-------------------------------------------:::::::::::::::-----------------------========-------------------------------==++++***************++++============+++++**********########****+==-:::..............................................................................=#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%###%::#%%%%%%%%%%%%%%%%%%%%%%%%%%##%##:#*...+%#######-..:#%%%%+#%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################******************########********#####*==-::::---::---::::::::::::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::::....................                          =++=-:::::------------------------------------::::::::::::::::::::::--------:::::::::::::::::------------------:::::::::::::::::::::::::::--------:::::::::......                           .      . ................                      ...::--=+++==--:.....                                                 .....      ...........................................................................................................................:::--------------------------:::::::::::::---------:::.................................................:::---==========------====================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::........................:-==+*******+++++++++++++++++++++++===-:::.....................::::::::::::::...........::::::::::..........................::...................................................................................................................................                       ................................::--==++++++++===-::..............................................................................................:::---=================================--:::::::---==============================---:::......................................................................::::::::::--=+++*******+++=--:::.......................................................................................................................................::::::--===+++++++++++++++++++++++========--------:::::::::::::::::::..:::::::----======++++++++****#################################################################################################################################################################******#################********************####################***************###########################################*******************************************************************#########################################################################################################################################################################################################################################################**+++=======++*****###********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++=====================================================--------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::..............................:+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::---------------------------------------======-------------------------------------------:::::::::::::::------------------------=======------------------------------===+++******####********++++++=====++++++********#############**++=--:::..............................................................................-##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%::*%%%%%%%%%%%%%%%%%%%%%%%%%#%#%%*:#*...*%#######:...+%%%%**%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################****************########*******######+==-::::---:----------::---------::::::::::::::::-----:::::::::::::::::::::::::::::::::....................                         :+++-::::::-----------------------------------:::::::::::::::::::::::--------::::::::::::::::--=----------------:::::::::::::::::::::::::::--------:::::::::......                                     .............                       ...::-==+++==-::......                                                ....        ..........................................................................................................................:::--------------------------------::::------------:::.................................................:::---==========-----=====================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::........................::-=++*******+++++++++++++++++++++++===-:::.....................::::::::::::::...........::::::::::...............................................................................................................................................................                       ................................::--==++++++++===-:::..............................................................................................:::--=================================---::::::---==============================---:::......................................................................:::::::::--==++*********++==--::.........................................................................................................................................:::::--===+++++++++++++============--------:::::::::::::::::...........:::::----======++++++++*****###############################################################################################################################################################*******#################********************####################***************###########################################*******************************************************************#########################################################################################################################################################################################################################################################**+++=======++*****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++=====================================================------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::............................:=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::--------------------------------------=======-------------------------------------------::::::::::::::-------------------------=======------------------------------===++*****#########*******++++++++++++*******################***++=--::...............................................................................-##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%#%%%%%#%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%::=%%%%%%%%%%%%%%%%%%%%%%%%%#%##%+.%+..:#%#%###%*:...=%%%%#+%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################**************########***##*######*-==-::::----------------------------:::-:::::::::-----:::::::::::::::::::::::::::::::::....................                          +++=:::::::-----------------------------------:::::::::::::::::::::::--------:::::::::::::::--=-=-----------==-:::::::::::::::::::::::::::-=-------::::::::......                                          .......                        ...::-==+++==-::.... .                                                ....        ..........................................................................................................................::::-----------------------------------------------:::.................................................:::---==========-----=====================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::........................::-=++*******+++++++++++++++++++++++===-:::.....................:::::::::::::.............:::::::::..............................................................................................................................................................                        ................................::--==++++++++===-:::..............................................................................................:::--=================================---::::::--===============================---::.......................................................................:::::::::--=+++*********+++=--::...........................................................................................................................................::::--===+++++==============---------:::::::::::::.....................:::-----======+++++++******##############################################################################################################################################################*******#################********************####################***************###########################################**********************************************###******************#########################################################################################################################################################################################################################################################**+++=======+++*******************************************************************************************************************+++++******************************************++++++++++++++++++++++++++++++++++++========================================================---------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::...........................=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::--------------------------------------=========-----------------------------------------:---:::::::----------------------------========-----------------------------===++****#############********++++********##################***++==--::...............................................................................-##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%#%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%:.-#%%%%%%%%%%%#%%%%%%%%%%%%#%%#%=:%=..:#%#%###%+:...:#%%%#=#%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################************########**##########+-=-::::---------------------------------::::------------::::::::::::::::::::::::::::::::...................                          =++=-:::::::-----------------------------------::::::::::::::::::::::---------::::::::::::::-=-=--=----------=-::::::::::::::::::::::::::::---------::::::........                               ..                                      ....::-===+===-::....  .                                               ....        ..........................................................................................................................::::----------------=------------------------------:::.................................................::---===========-----=====================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::........................::-=+********+++++++++++++++++++++++==--::::....................:::::::::::::.............::::::::................................................................................................................................................................                         ..............................::--===+++++++===-:::..............................................................................................:::--==================================---::::---===============================--:::.......................................................................:::::::::--=+++*********+++=--:::.......................................................................................................:::::..............................::::---==============-----------:::::::::::::::.......................::::------=====+++++++******#############################################################################################################################################################********#################********************####################***************###########################################********************************************#####******************#########################################################################################################################################################################################################################################################***++=======+++****************************************************************************************************************+++++++++++****************************************+++++++++++++++++++++++++++++++++++++=====================================================----------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.........................-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::--------------------------------------=========--------------------------------------------------------------------------------========-----------------------------===++*****###############***************##################*****++=--:::...............................................................................-##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%#%#%%####%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####-:-*%%%%%%%%%#%%%%%%%%%%%%%%#%#%#:-%:..:%%######=....:*%%%#=#%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################***********########**#########*===-:::----------------------------------:::--------------:::::::::::::::::::::::::::::::....................                         :+++-::::::::-----------------------------------::::::::::::::::::::::--------::::::::::::::-=-=-------------=-::::::::::::::::::::::::::::==--------::::::........                                                                      ....::-===+==--:.....  .                                               ....        ..........................................................................................................................:::::----------------------------------------------:::.................................................::---===========-----=====================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.......................::--=+********+++++++++++++++++++++++==--:::::...................:::::::::::::.............::::::::.................................................................................................................................................................  ..........      .      .............................::--===+++++++===-::...............................................................................................:::---=================================---:::----===============================--:::.......................................................................::::::::--==+++*********+++==-:::......................................................................................................::::::::.............................::::----======------------:::::::::::::::::::........................::::-------====+++++++******#############################################################################################################################################################********#################********************####################***************###########################################********************************************######*****************########################################################################################################################################################################################################################################################****++=======++++*************************************************************************************************************+++++++++++++++**************************************++++++++++++++++++++++++++++++++++++++======================================================--------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.......................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*----:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-------------------------------------=========---------------------------------------------------------------------------------========-----------------------------===+++*****################***********###################****+++==--:::...............................................................................:##########**###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%#%########%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*:-=%%%%%%%%%#%%%%%%%%%%%%%%#%#%#.+%:..-%%######-.....+%%%%=+%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################**********###################+-==-::-----------------------------------:-----------------:::::::::::::::::::::::::::::::....................                        .+++-::::::::::----------------------------------::::::::::::::::::::::--------::::::::::::::=--=-------------=-:::::::::::::::::::::::::::===---------::..........                                                                      ....::-======--:.....  .                                               ....        ..........................................................................................................................:::::---------------------------------------=------:::.................................................::---===========----======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::......................:::-==+*******++++++++++++++++++++++++===--:::::::................::::::::::::::.............:::::::.................................................................................................................................................................. ..................      ............................::--===+++++++===-::...............................................................................................:::---=================================----:-----==============================---:::.......................................................................:::::::---==+++**********++==--::.....................................................................................................:::::::::::............................:::::------------:::::::::::::::::::::..............................:::::-------===+++++++******############################################################################################################################################################*********#################********************####################****************##########################################********************************************######*****************########################################################################################################################################################################################################################################################****+++=======+++***********************************************************************************************************++++++======+++++++*************************************+*++++++++++++++++++++++++++++++++++++=======================================================------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::.....................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::------===-----------------------------=========---------------------------------------------------------------------------------========------------------------------==++++******#########################################*****+++==---:::................................................................................:*#########**###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+#:=-%%%%%%%%%%%%%#%%%%%%%%%%####*:##:..=%%%#####:.....-#%%%+=%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################*********####################===----------------------------------------------------------::::::::::::::::::::::::::::::..........   .......                         =++=-::::::::::----------------------------------:::::::::::::::::::::--------::::::::::::::=--=----------=--=-:::::::::::::::::::::::::::====--------::..........                                                                      .....:--=====-::.....  .                                               ....        ..........................................................................................................................:::::---------------------------------------=------:::................................................:::---===========----======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::....................:::--=++*******++++++++++++++++++++++++===--::::::::::.............::::::::::::::.............:::::::.......................................................................................................................................................................................      ..........................::--===+++++++===-::................................................................................................:::--=================================---------===============================---:::......................................................................::::::::---==++***********+++=--::....................................................................................................:::::::::::::............................:::::::::::::::::::::::::::::::....................................:::::-------====++++++******############################################################################################################################################################*********##################*******************####################****************##########################################********************************************######*****************#######################################################################################################################################################################################################################################################*****+++=======+++******##************************************************************************************************+++++++===========+++++***************************************++++++++++++++++++++++++++++++++++++========================================================----------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::...................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::----=======---------------------------========-------------------------==========-----------------------------------------------========------------------------------====++++********##################################******+++===---:::.................................................................................:*########%*+################%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%:#+--*%%%%%%%%%%%%#%%%%%%%%%%####+.##:..+%#%#####:.....:#%%%*=#%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%######################################********###################*===-:---------------------------------------------------------::::::::::::::::::::::::::::::.........     .....                         -++=-:::::::::::---------------------------------::::::::::::::::::::::--------:::::::::::::-=-=----------=---=:::::::::::::::::::::::::::=====-=------:..........                                                                      .....:--====--::.....                                                  ....        ...........................................................................................................................:::::::--------------------------------------------::................................................::---============----======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..................::::--==++******+++++++++++++++++++++++++===--:::::::::::::..........:::::::::::::..............::::::..........................................................................................................................................................  ............................      ..........................:::-===++++++===--::................................................................................................:::--==================================--------===============================---:::......................................................................:::::::----=+++***********+++=--::...................................................................................................:::::::::::::::............................:::::::::::::::::::::::::::.......................................:::::-------====++++++******###########################################################################################################################################################**********##################*******************#####################***************##########################################********************************************#######*****************######################################################################################################################################################################################################################################################******++=======+++*****########***************************************************************************************+++++++++==============+++++**************************************+++++++++++++++++++++++++++++++++++++========================================================---------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::.................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::----========--------------------------=======-----------------------================--------------------------------------------========-------------------------------====+++++*********#############################******++++==---::::..................................................................................:+#########*=################%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%:*#::+@%%%%%%%%%%%#%%%%%%%%%%###%=.%*.::*%#%###%*:.....:#%%%*=*%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%#####################################*******####################+-==-----------------------------------------------------------::::::::::::::::::::::::::::::.........      .....                        .+++-:::::::::::----------------------------------:::::::::::::::::::::---------::::::::::::-=-=-=----------=---::::::::::::::::::::::::::-======------:..........                                                                   .  .....:--====--:.....                                                   ....        ...........................................................................................................................:::::::::------------------------------------------:::...............................................::---============----======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::................:::::---==++******+++++++++++++++++++++++++===---::::::::::::::::.....::::::::::::::..............::::::........................................................................................................................................................     ............................      .........................:::--==++++++===--::................................................................................................:::---=================================--------===============================---::........................................................................::::::----=+++***********+++=--:::.................................................................................................:::::::::::::::::.............................::::::::::::::::::..............................................:::::-------====++++++*****###########################################################################################################################################################************#################*******************#####################***************##########################################********************************************#######*****************#####################################################################################################################################################################################################################################################*******+++======+++****###########************************************************************************************++++++++==================++++**************************************+++++++++++++++++++++++++++++++++++++=========================================================-------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...............-*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::---=========--------------------------======----------------------======================----------------------------------------========--------------------------------=====+++++++********########################******++++===---::::...................................................................................:+#########*-*###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-=%-:-%%%%%%%%%%%%#%%%%%%%%%%####-:%=.::#%%%###%+..:.:..+%%%#=+%%%%%%%%@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%######################################*****####################*====------------------------------------------------------------::::::::::::::::::::::::::::::........      .....                         +++=::::::::::::----------------------------------:::::::::::::::::::::--------::::::::::::-=-=-=--------------::::::::::::::::::::::::::-=======-----:..........                                                                   .  .....::-===--::.....                                                   ....        ............................................................................................................................:::::::::::::-------------------------------------:::..............................................:::--=============----======================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............:::::----===++******+++++++++++++++++++++++++===-----:::::::::::::::::::::::::::::::::..............::::::................................................................................................................................................ .......      ..............  ............     ..........................::--===+++++===--::................................................................................................:::---==================================------================================--:::........................................................................:::::----==+++***********+++==-:::.................................................................................................::::::::::::::::::.............................::::::::::.....................................................:::::-------====++++++******#########################################################################################################################################################*************#################*******************#####################***************##########################################********************************************########****************######################################################################################################################################################################################################################################################*******++======+++****###########***********************************************************************************++++++======================+++*****************************************++++++++++++++++++++++++++++++++++++=======================================================-------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.............-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::---=========--------------------------======----------------------========================--------==========--------------------========----------------------------------=======++++++*****######################******++++===---:::::....................................................................................:+#########*:+###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%#%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%+:%+-:%%%%%%%%%%%%#%%%%%%%%%%####:-%:..:#%%#####=.......=%#%#-=%%%%%%%%@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%######################################*****####################+====------------------------------------------------------------::::::::::::::::::::::::::::::........      ......                        =++=-:::::::::::-----------------------------------:::::::::::::::::::::--------:::::::::::---=-----------=--=-::::::::::::::::::::::::::-=======-=---:..........                                                                   .  .....::--==--:......                                                   ....        ................................................................................................................................::::::::::::::::-------------------------=-----:::.............................................:::--=============----======================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::...........:::::-----====++*****++++++++++++++++++++++++++===-------:::::::::::::::::::::::::::::::..............::::::................................................................................................................................................ .......       ........        ............     .........................::--===+++++===--::.................................................................................................::---===================================-----================================--:::........................................................................:::::----==+++***********+++==-:::................................................................................................:::::::::::::::::::............................................................................................:::::-------====++++++******########################################################################################################################################################**************#################*******************#####################***************##########################################********************************************########****************##########################################################################################################################################################################################################################################################***+++=====+++***#############**********************************************************************************++++========================++++*****************************************++++++++++++++++++++++++++++++++++++=======================================================------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.......:::--*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::---===++====--------------------------===------------------------=============================================-----------------=========------------------------------------========+++++****####################****+++++===---:::::......................................................................................:+%#######%*:=################%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#.*#-:#%%%##%%##%%#%%%%%%%%%%###*.+%:..:%%%#####-....:..-%%%#--*%%%%%%%@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################*****####################====--------------------------------------------------------------::::::::::::::::::::::::::::::.......        ....                        -+++-::::::::::::-----------------------------------::::::::::::::::::::---------:::::::::::--=-----------=-----::::::::::::::::::::::::::========----:. .......                                                                      ......::-----::......                                                    .           ...................................................................................................................................::::::::::::::::::--------------------------:::...........................................:::---=============----======================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.........::::-----=====+++****+++++++++++++++++++++++++++===---------:::::::::::::::::::::::::::::..............::::::.........................................................................................................................................................     ..............  ........              .....................::--===+++++===--::.................................................................................................:::--=====================================-=================================---:::........................................................................:::::----==+++***********+++==-:::..............................................................................................:::::::::::::::::::::............................................................................................:::::--------===+++++++*****#######################################################################################################################################################***************#################********************####################****************#########################################*********************************************#######****************##########################################################################################################################################################################################################################################################****++=====+++***############**********************************************************************************+++===========================+++*******************************************+++++++++++++++++++++++++++++++++++========================================================----------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::....:-+*####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::---=========----------------------------------------------------================================================---------------=========---------------------------------------=======++++****##################****+++=====---::::........................................................................................:+%########*:-################%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#.=%=.+%%%%%%%%#%%#%%%%%%%%%%###+.*#:..-%%##%###:.......:#%%#=-+%%%%%%%@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################*****###################*====--------------------------------------------------------------::::::::::::::::::::::::::::::.......        ....                        .+++-:::::::::::::-----------------------------------:::::::::::::::::::---------:::::::::::-=-==---------=-----::::::::::::::::::::::::::-========---:. ......                                                                        ......::---:::.....                                                     .           .........................................................................................................................................:::::::::::::::::----------------------:::.........................................:::---==============----======================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.......::::------======+++***++++++++++++++++++++++++++====----------::::::::::::::::::::::::::::..............:::::::........................................................................................................................................................     .............. ........               .....................:::-====++++===-::..................................................................................................:::---======================================================================---:::........................................................................:::::----==+++***********+++==-:::..............................................................................................:::::::::::::::::::::............................................................................................:::::--------===+++++++*****######################################################################################################################################################****************#################********************####################****************#########################################*********************************************#######****************###########################################################################################################################################################################################################################################################***+++====+++***############**********************************************************************************+++============================+++*******************************************+++++++++++++++++++++++++++++++++++=======================================================----------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::-=*#%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....:::----========-----------------------------------------------------====================================================-----------==========------------------------------------------=====+++****#################***+++===----:::::.........................................................................................:+%########*::*################%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.:%*.-%%%%%##%#%%#%%%%%%%%%%%##=.##::.-%%##%#%#:.......:*%%%+-=%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################****###################=====---------------------------------------------------------------::::::::::::::::::::::::::::::......        .....                        =++=-:::::::::::::------------------------------------::::::::::::::::::---------::::::::::-=-==---------=-=----:::::::::::::::::::::::::-========---.                                                                                 .....:::-:::....                                                       .           ..................................................................................................................................................:::::::::::::::---------------:::::......................................:::---===============----======================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::......:::-----=========++++*+++++++++++++++++++++++++++===---------------::::::::::::::::::::::::..............::::::::.......................................................................................................................................................     ......................                .....................:::-====++++==--::..................................................................................................:::---======================================================================---:::........................................................................:::::----==+++***********+++==-:::..............................................................................................:::::::::::::::::::::............................................................................................::::---------====+++++++****#####################################################################################################################################################*****************#################********************####################****************#########################################*********************************************######*****************############################################################################################################################################################################################################################################################***++====+++***############**********************************************************************************++=============================+++**********************************************+++++++++++++++++++++++++++++++++=======================================================---------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--=+#%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....:::----========----------------------------------------------------========================================================-------===========--------------------------------------------====+++***################***+++===----:::::...........................................................................................=%########*:.+#################%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%:.##::%%%%%#%#%%%#%%%%%%%%%%%%#-:%*::.=%%#%##%*.........+%%%*--#%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################***###################*====-----------------------------------------------------------------:::::::::::::::::::::::::::::.......       .....                        :+++--:::::::::::::-------------------------------------:::::::::::::::::--------:::::::::::---=--------------=--::::::::::::::::::::::::-======-==-:.                                                                                  ....::::::......                                                      .           .......................................................................................................................................................::::::::::::--------------:::::....................................:::----===============----======================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.....::----===========++++++++++++++++++++++++++++++++===-----------------:::::::::::::::::::::::............::::::::::::::::................................................................................................................................................      .....................                ......................::--===+++===--::..................................................................................................:::---======================================================================--:::.........................................................................:::::----==+++***********+++==-:::..............................................................................................::::::::::::::::::::::...........................................................................................::::---------====+++++++*****##################################################################################################################################################*******************##################*******************####################****************#########################################*********************************************######*****************############################################################################################################################################################################################################################################################***++++=++++***############*********************************************************************************+++==============================+++***********************************************+++++++++++++++++++++++++++++++++======================================================--------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+*##%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....:::-----=====------------------------------------------------------==========================================================----============---------------------------------------------===+++*************######***++===----:::::............................................................................................=%########*:.-#################%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%:.+%-:%%%#%#%%%%%##%%%%%%%%%%##::%+..:*%##%##%+.:.......=%%%*:-+%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################***###################+====-----------------------------------------------------------------:::::::::::::::::::::::::::::.......        ....                         +++-::::::::::::::::------------------------------------::::::::::::::::---------::::::::::-=-=--------------=---:::::::::::::::::::::::-=======-=-:                                                                                    ....:::::.....                                                       .           ............................................................................................................................................................:::::::::--------------:::..................................::::----================----======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....:::---============++++++++++++++++++++++++++++++++===------------------:::::::::::::::::::::::...........:::::::::::::::::...............................................................................................................................................      .....................                ......................::--====++===--::...................................................................................................:::--======================================================================--:::.........................................................................:::::----==++++**********+++==-:::..............................................................................................::::::::::::::::::::::...........................................................................................::::---------====++++++++****################################################################################################################################################*********************##################*******************####################*****************########################################*********************************************#####******************#############################################################################################################################################################################################################################################################***+++++++*****##########**********************************************************************************+++==============================+++************************************************+++++++++++++++++++++++++++++++++=======================================================------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::---------------------------------------------------------------============================================================================---------------------------------------------==+++***************####***++==----:::::.............................................................................................=#########+:.:#################%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%:.-%+.#%%%%#%%%####%%%%%%%%%%#+.-%-..:#%#%%##%-....:....-%%%#::=%%%%%%@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################***###################=====------------------------------------------------------------------:::::::::::::::::::::::::::::......        .....                        =++=-::::::::::::::::-------------------------------------:::::::::::::::---------::::::::::--==-------=-------=----:::::::::::::::::::::========--.                                                                                    ....::::......                                                       ..          .................................................................................................................................................................:::::-------------:::.................................::::-----================----======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....::---=============++++++++++++++++++++++++++++++++===---------------------:::::::::::::::::::::::........:::::::::::::::::...............................................................................................................................................           ......     .                     .....................::--====+====-:::...................................................................................................:::--=====================================================================---:::.........................................................................::::::----=++++**********+++==-:::..............................................................................................::::::::::::::::::::::...........................................................................................::::----------===++++++++****###############################################################################################################################################***********************#################*******************####################*****************########################################*********************************************#####******************#############################################################################################################################################################################################################################################################***+++++++*****##########**********************************************************************************++================================+++*************************************************++++++++++++++++++++++++++++++++======================================================------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-------------------------------------------------------------==============================================================================---------------------------------------------==+++*****************##***++==---::::::.............................................................................................=#########+:.:*#################%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%########%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%-..##.+%%%%###%####%%%%%%%%%%#=.+%:..:#%#%####:.........-%%%#::-*%%%%%@@@@@@%@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################**###################*====-------------------------------------------------------------------:::::::::::::::::::::::::::::......         ....                        :+++-:::::::::::::::::------------------------------------:::::::::::::::---------::::::::::-=-==------=---=-----=-----::::::::::::::::::-===-=---:                                                                                     ......:......                                                        ..          ..................................................................................................................................................................::::--------------:::...............................::::-----=================---=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..:::---=============++++++++++++++++++++++++++++++++==----------------------:::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................................................................................                                             ...... .............:::--=======--::....................................................................................................:::---====================================================================---:::..........................................................................:::::----==+++**********+++==-::...............................................................................................::::::::::::::::::::::...........................................................................................:::::---------===+++++++++****#############################################################################################################################################************************#################*******************####################*****************########################################*********************************************#####******************#############################################################################################################################################################################################################################################################****+++++******#########**********************************************************************************+++================================+++***************************************************+++++++++++++++++++++++++++++++======================================================-----------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%++-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-------------------------------------------------------=====================================================================================--------------------------------------------===++*******+++++**********+==----::::::.............................................................................................=#########+:..+#################%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%########%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%=..*%:-%%%#%%#%#####%%%%%%%%%#-.##:..:%#%%####:.......:.-#%%#:::+%%%%%@@@@@@%@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################**###################+====-------------------------------------------------------------------:::::::::::::::::::::::::::::.......        ....                         +++-:::::::::::::::::-----------------------------------::--:::::::::::::---------:::::::::-=-==-----------=-=-----==-::::::::::::::::::--==-----:                                                                                      ...........                                                         ..          ...................................................................................................................................................................:::--------------:::..............................:::------==================---=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..:::---============+++++**+++++++++++++++++++++++++===----------------------::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................................................................................                                             ......  .............::--=======--::....................................................................................................:::---====================================================================--::::..........................................................................::::::---==+++**********+++==-::...............................................................................................::::::::::::::::::::::...........................................................................................:::::---------===+++++++++****############################################################################################################################################*************************#################*******************####################*****************########################################*********************************************#####******************##############################################################################################################################################################################################################################################################******+*******########***********************************************************************************+++================================+++****************************************************+++++++++++++++++++++++++++++++======================================================----------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=+-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-------------------------------------------------------======================================================================================-------------------------------------------===+++**+++++++++++*******++==----::::::.............................................................................................-#########+:..=#################%%%%%%%%%%%%%%%%%%%%%%%%%#####%######%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%*..=%=:%%%%%%#%###%#%%%%%%%%%#::##:.::#%####%*.........::#%%%-.:-#%#%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################**#####%%##%%#%#####*=====--------------------------------------------------------------------::::::::::::::::::::::::::::.......        ....                         =++=--::::::::::::::::----------------------------------------:::::::::::---------::::::::::=---=-------------------=-::::::::::::::::::-=-----:::.                                                                                    ............                                                         ...         ....................................................................................................................................................................:::-------------:::.............................::::----====================---=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::---=============++++*****+++++++++++++++++++++++===---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................................................................................                                              ....................:::--=====--::......................................................................................................:::--====================================================================--::::...........................................................................::::::--==+++**********+++==-::............................................................................................:::::::::::::::::::::::::...........................................................................................:::::---------===+++++++++****##########################################################################################################################################****************************################*******************#####################****************########################################*********************************************#####******************##############################################################################################################################################################################################################################################################*****************####*********##########*****************************************************************+++================================+++******************************************************++++++++++++++++++++++++++++++=====================================================----------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::---------------------------------------------------==================================================================================+========------------------------------------------===+++++++++====++++******++==----:::::..............................................................................................-#########+:..:#################%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%#%#..:%*:%%%%%%#%###%#%%%%%%%%%#::%#:..-%%####%*..........:#%%%=..:*%#%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*######%%##%########+====---------------------------------------------------------------------::::::::::::::::::::::::::::.......         ...                         :++=-:::::::::::::::::----------------------------------------::::::::::::---------:::::::::----=-------------------=-::::::::::::::::::---::::::::                                                                                     .........                                                           ....        ....................................................................................................................................................................:::-------------:::............................:::-----=====================---=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::---=============+++******+++++++++++++++++++++++===---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................................................................................                                              .....................::---===---::......................................................................................................:::--====================================================================--:::............................................................................:::::::--==+++*********+++=--::............................................................................................:::::::::::::::::::::::::............................................................................................::::----::---====++++++++****##########################################################################################################################################****************************################*******************#####################****************########################################*******************************************#######******************##############################################################################################################################################################################################################################################################*****************###**********##########****************************************************************+++=================================+++********************************************************++++++++++++++++++++++++++++======================================================---------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::---------------------------------------------------===============================================================================+++++========-----------------------------------------===++++++=========+++****+++==---::::::..............................................................................................:#########+:..:*################%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%############################%%%%%%%%%%#####%%%%%%%%%%%...##:#%%%%##%%%#%#%%%%%%%%%#::%*...=%#####%=..........:*%%%*..:+%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%########=====---------------------------------------------------------------------::::::::::::::::::::::::::::.......         ....                         +++---::::::::::::::::-----------------------------------------::::::::::----------::::::::----=-----------------==-::::::::::::::::::::::::::::::.                                                                                    ........                                                            ....        ....................................................................................................................................................................:::-------------:::...........................:::----=======================---=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::---==============+++*******++++++++++++++++++++++===---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................................................................                                              .....................:::-------:::......................................................................................................:::---==================================================================---:::.............................................................................::::::--==+++*********++==--::............................................................................................:::::::::::::::::::::::::............................................................................................::::----::---====+++++++++***######################################################################################################################################********************************################********************####################****************########################################******************************************########******************##############################################################################################################################################################################################################################################################*************#***###**********##########****************************************************************+++=================================+++*********************************************************++++++++++++++++++++++++++++=====================================================---------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::---------------------------------------------------==============================================================================+++++++=========----------------------------------------====++============+++**+++===---::::::..............................................................................................:#########+....+#################%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%###############################%%%%%#########%%%%%%##%%:..+%-+%%%%#%%%%#%#%%%%%%%%%#:-%=.::*%#####%-..........:*%%%*::.=%#%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%#%#####*=====----------------------------------------------------------------------:::::::::::::::::::::::::::........        ....                         =++=--::::::::::::::::-------------------------------------------:::::::::---------:::::::::---------------------==-:::::::::::::::::::::::::::::::                                                                                    .......                                                             ....        ....................................................................................................................................................................:::--------------::..........................:::----========================---=======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::----==============++********++++++++++++++++++++++===---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................................................................                                              ......................:::-----:::.......................................................................................................:::---==================================================================---:::...............................................................................:::::--=++++********++==-:::............................................................................................::::::::::::::::::::::::::...........................................................................................::::---::::--=====++=+++++***###################################################################################################################################***********************************#################*******************####################****************########################################*****************************************########******************#############################################################################################################################################################################################################################################################*******************##***********##########****************************************************************+++==================================+++*********************************************************+++++++++++++++++++++++++++++=====================================================-------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::::---------------------------------------------------==============================================================================+++++++++============------------------------------------=========-------===+++++++==----::::::..............................................................................................:#########=....-#################%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%##################################%%###########%%####%%:..-%+-%%%##%##%#%%%%%%%%%%%#:=%:..:#%######:...........+%%%#::.-##%@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%#%#+====-----------------------------------------------------------------------::::::::::::::::::::::::::::.......         ...                         -++=---::::::::::::::::--------------------------------------------::::::::---------::::::::---------------------==-:::::::::::::::::::::::::::::::.                                                                                   .....                                                               ....         ...................................................................................................................................................................:::--------------::........................:::----==========================---=======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::----==============+++********++++++++++++++++++++++===---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................................................................                                              .......................:::::::::........................................................................................................:::---==================================================================---:::.................................................................................:::--==+++*******+++==-:::............................................................................................::::::::::::::::::::::::::...........................................................................................::::---::::--=====++==++++***#################################################################################################################################*************************************#################*******************####################****************#######################################***************************************############*##***********########################################################################################################################################################################################################################################################**######********************************##########***************************************************************+++===================================+++**********************************************************++++++++++++++++++++++++++++++===================================================-------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::---------------------------------------------------=============================================================================++++++++++================---------------------------------======----------====+++====----::::::..............................................................................................:*########=....:#################%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%#####################################################%%%:..:##:%%%##%##%#%%#%%%%%%%%#:*%::.:#%%###%#:...........=%%%#:..:*%%@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%#%*=====-----------------------------------------------------------------------::::::::::::::::::::::::::::.......         ...                         :++=---:::::::::::::::::---------------------------------------------::::::----------:::::::----------------==-===--::::::::::::::::::::::::::::::::                                .                                                     .                                                                .....  .     ...................................................................................................................................................................:::--------------::......................::::----===========================--========================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::----==============++*********++++++++++++++++++++++==----------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................................................................                                             ........................:::::::..........................................................................................................:::--==================================================================--:::...................................................................................:::--=+++*******+++=--:::............................................................................................::::::::::::::::::::::::::...........................................................................................:::::-:::::---====+====++++***#############################################################################################################********########****************************************#################*******************####################*****************#####################################***************************************#####################***################################################################################################################################################################################################################################*********************############**********************************##########***************************************************************+++===================================+++***********************************************************++++++++++++++++++++++++++++++===================================================------
**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::----------------------------------------------------===========================================================================++++++++++++==================-------------------------------==--------------=========----:::::::..............................................................................................:*########=....:*#################%%%%%%%%%%%%%%%%%%%%%%###############%%#%%%%%########################################################%%:..:*%-#%%#%##%%#%%#%%%%%%%%#:##::.:%%%###%*:...........=%%%#:...+#%@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%#+=====-----------------------------------------------------------------------::::::::::::::::::::::::::::.......          ...                        .+++=--:::::::::::::::::::-------------------------------------------:-:::::---------:::::::--------------====-==--:::::::::::::::::::::::::::::::::.                             ...                                                                                                                      ..... ..     ...................................................................................................................................................................:::--------------::....................::::----=============================--========================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::-----==============++*********++++++++++++++++++++++==---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................................................................                                             .........................................................................................................................................:::--=================================================================---:::....................................................................................:::-==+++******++==--::.............................................................................................:::::::::::::::::::::::::::..........................................................................................:::::::::::---==========+++***##########################################################################################################***********########****************************************#################*******************####################*****************####################################***************************************####################################################################################################################################################################################################################################################***************************##########*******************#**************###########***************************************************************++====================================+++************************************************************++++++++++++++++++++++++++++++==================================================------
***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::----------------------------------------------------===========================================================================++++++++++++====================-----------------------------------------------=====-----::::::::..............................................................................................:*########-.....+#################%%%%%%%%%%%%%%%%%%%%%%################%#%%%%#########################################################%%:...=%=*%%%%#%%%#%##%%%%%%%%#:##:..-%%####%+............=%%%#:...-#%@@@@@@@%@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%##%#+=====-----------------------------------------------------------------------::::::::::::::::::::::::::::.......          ...                         +++=---::::::::::::::::::---------------------------------------------:::::----------:::::::-------------====-==--::::::::::::::::::::::::::::::::::                            ....                                                                                                                      ..... ..     ...................................................................................................................................................................:::--------------:::.................:::::----===============++=++==========--========================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::----==============++*********++++++++++++++++++++++===--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................                                             .........................................................................................................................................:::---================================================================---:::....................................................................................:::--=+++*****+++==--::.............................................................................................:::::::::::::::::::::::::::..........................................................................................:::::::::::---==========+++***##########################################################################################################***********########****************************************#################*******************####################*****************####################################**************************************#####################################################################################################################################################################################################################################*#############******************************#########***##**************##*************###########**************************************************************+++====================================+++*************************************************************+++++++++++++++++++++++++++++==================================================------
***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::----------------------------------------------------==========================================================================+++++++++++++=========================---------------------------------------------------:::::::::..............................................................................................:*########-.....-#################%%%%%%%%%%%%%%%%%######################%%%%%%########################################################%%=...-%*+%%%##%##%%#%%%%%%%%%#:%#::.=%#%%#%%=............=%%%%:...:%%@@@@@@@%@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%*======-----------------------------------------------------------------------:::::::::::::::::::::::::::::......          ...                         =++=---:::::::::::::::::::-----------------------------------------------:::---------:::::::--==-=----------==-==-::::::::::::::::::::::::::::::::::.                          ::.. ..                                                                                                                   .......  ..     .................................................................................................................................................................::::-------------:::................::::----==================++++++=================================================================================================================================-----------------------------=---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::----============+++*********++++++++++++++++++++++==---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................                                            .............. ............................................................................................................................::---================================================================---:::.....................................................................................::--==++*****+++=--:::.............................................................................................:::::::::::::::::::::::::::..........................................................................................::::::::::::--===========++***#######################################################################################################**************************************************************#################*******************####################*****************###################################**************************************######################################################################################################################################################################################################################################*******#********************************************************************************############************************************************************+++=====================================++*************************************************************++++++++++++++++++++++++++++++==================================================-----
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::----------------------------------------------------========================================================================+++++++++++++++==========================-------------------------------------------------::::::::::..............................................................................................:*########-.....:#################%%%%%%%%%%%%%%%%%%#####################%%%%%%########################################################%%+...:##=%%%%#%##%%#%%%%%%%%%#:%*::.+%######-............=%%%%-...:%%@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%*======-----------------------------------------------------------------------:::::::::::::::::::::::::::::......          ...                         -++=---:::::::::::::::::::-----------------------------------------------::::---------::::::-===-=-----=====--==-::::::::::::::::::::::::::::::::::::                         ..:. ...                                                                                                                   .......   .     .................................................................................................................................................................::::-------------:::..............:::-----====================++++++=================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::----============+++*********++++++++++++++++++++++==---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................                                            ...........................................................................................................................................:::--================================================================---:::.....................................................................................:::-==++****++++=--::::............................................................................................::::::::::::::::::::::::::::.........................................................................................::::::::::::--===========++***################################################################################################*********************************************************************##################******************####################*****************###################################*************************************#############################################################################################################################################################**########################################################################****************************************************************************************############************************************************************+++=====================================++**************************************************************++++++++++++++++++++++++++++++=================================================-----
**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::----------------------------------------------------=======================================================================++++++++++++++++==============================--------------------------------------------:::::::::::..............................................................................................:#%#######-..::.:*%###############%%%%%%%%%%%%%%###%#######################%%%%########################################################%%*....*%-%%%%####%%#%%%%%%%%%#-%=.::*%#%#%##:............=%%%%=...:%@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%#+======-----------------------------------------------------------------------:::::::::::::::::::::::::::::......          ...                         :+++=---::::::::::::::::::::---------------------------------------------::::----------:::::-==--=--===--====-==-::::::::::::::::::::::::::::::::::::.                         .:: .....  ...                                                                                                            .......   .    ......................................................................................................................:::.........................................::::-------------:::............::::----======================++++++=================================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::----===========++***##*****+++++++++++++++++++++++=--------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................................................                                            ...........................................................................................................................................:::--================================================================--:::.......................................................................................::--=+++***+++==--::::............................................................................................:::::::::::::::::::::::::::::........................................................................................::::::::::::--===========+++**#############################################################################################************************************************************************##################******************####################******************###################################***********************************###########################################################################################################################################################**************###############################################################***************************************************************************************#############************************************************************++======================================++***************************************************************++++++++++++++++++++++++++++++=================================================----
***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::::-----------------------------------------------------======================================================================+++++++++++++++++===================================--------------------------------------::::::::::::..............................................................................................:#%#######-..::::+%###############%%%%%%%%%%%%%%###########################%%%%########################################################%%#....=#+%%%#####%%#%%%%%%%%%#=#-.::#%######.:...........=%%%%+...:%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%#=======------------------------------------------------------------------------::::::::::::::::::::::::::::........         ..                         :+++=----:::::::::::::::::::----------------------------------------------::::---------::::::==-==--=-----=-=-=--:::::::::::::::::::::::::::::::::::::                       .  .:. .....   ..                                                                                                           .......        ....................................................................................................................:::::::.......................................::::-------------:::...........:::----========================++++++=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---===========++***###****+++++++++++++++++***+++=-------::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................................................                                            ...........................................................................................................................................:::--================================================================--:::.......................................................................................::--==++***+++==--::::..............................................................................................:::::::::::::::::::::::::::........................................................................................:::::::::::---============++**#############################################################################################************************************************************************##################******************####################******************###################################*******************************##########################################################################################################################*****###################**########******************##################################################################**********************************************************************************###############***###*****************************##*********************+++======================================++****************************************************************++++++++++++++++++++++++++++++=================================================---
****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::::-----------------------------------------------------=====================================================================++++++++++++++++++============================================---------------------------::::::::::::::..............................................................................................:#%#######-..:::.=#################%%%%%%%%%%%%%%%#########################%%%%#########################################################%%....-#*%%%#%###%%#%%%%%%%%%#*#:.::%%####%*.:...........=%%%%*...-%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%*=======------------------------------------------------------------------------::::::::::::::::::::::::::::........         ..                         .+++=----::::::::::::::::::::-----------------------------------------------::----------:::::--====------=----=-::::::::::::::::::::::::::::::::::::::.                          .: ...     ...                                                                                                          ........       ..................................................................................................................::::::::::.......................................:::--------------::..........:::---==========================++++++=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==========+++***###****++++++++++++++++****+++=------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................................                                             ...........................................................................................................................................:::---==============================================================---:::.......................................................................................::--==++**+++==---:::::..............................................................................................::::::::::::::::::::::::::........................................................................................:::::::::::---============++***#########################################################################################***#************************************************************************#################*******************###################******************#####################################*************************############################################################################################################################***********#***********#******************************#################################**###############################**********************************************************************************#######################*******************#############******************+++======================================++****************************************************************++++++++++++++++++++++++++++++++===============================================---
*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::-----------------------------------------------------====================================================================++++++++++++++++++++================================================----------------------::::::::::::::...............................................................................................*########-..::::-#################%%%%%%%%%%%%%%%%%%%%%%%#################%%%%#########################################################%#....:##%%%%####%###%%%%%%%%###::.-%%####%=.............=%%%%#...=@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%+=======-------------------------------------------------------------------------:::::::::::::::::::::::::::........          .                         .+++=-----::::::::::::::::::::----------------------------------------------:::---------:::::-==-=------==--=---:::::::::::::::::::::::::::::::::::::::                           ..  ..     ...                                                                                                         ........       .................................................................................................................:::::::::::.......................................:::--------------:::.......::::---===========================++++++=================================================================================================================================-----------------------------------------------------------=-------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==========+++***####****++++++++++++++*****+++=----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................                                             ............................................................................................................................................::---==============================================================---:::.......................................................................................:::-==+++++++==--:::::::.............................................................................................:::::::::::::::::::::::::::.......................................................................................:::::::::::---============++***#########################################################################################****************************************************************************#################*******************###################******************######################################****************###############################################################################################################################************************************************************###############################****#############################**********************************************************************************###########################****************###############****************+++======================================+++***************************************************************++++++++++++++++++++++++++++++++================================================--
******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::-----------------------------------------------------===================================================================+++++++++++++++++++++===========================================================--------------:::::::::::...............................................................................................+#######*:...:.::+#############%%#%%%%%%%%%%%%%%%%%%%%%%%%################%%%%########################################################%%#.....*##%%%####%###%%%%%%%%###::.=%######-.............=%%%%#...*@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%#=======--------------------------------------------------------------------------:::::::::::::::::::::::::::.........         .                          =+++=----:::::::::::::::::::::----------------------------------------------::----------::::-==-=------=-----:::::::::::::::::::::::::::::::::::::::::.                       .  ........    ..                                                                                                         ........      ................................................................................................................::::::----::::......................................:::---------------:::....::::----===========================++++++++================================================================================================================================-----------------------------------------------------------=---------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::---==========+++***####*****+++++++++++++*****++==----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................                                             ............................................................................................................................................:::--==============================================================--:::.........................................................................................::-==+++++++==--:::::::..............................................................................................::::::::::::::-----:::::::.......................................................................................:::::::::::--=============++***#########################################################################################****************************************************************************#################*******************##################*******************########################################************###############################################################################################################################**************************************************************###############################****############################***********************************************************************************############################**************#################***************++=======================================+++****************************************************************+++++++++++++++++++++++++++++++++==============================================--
******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::-----------------------------------------------------===================================================================+++++++++++++++++++++==============================================================-------------:::::::::...............................................................................................+#######+:....:.:-###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%########################################################%%%.....=%#%%%########%%%%%%%%%%#::.+%######:.............=%%%%#..:#@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%#=======--------------------------------------------------------------------------:::::::::::::::::::::::::::.........         .                          =+++=-----:::::::::::::::::::::---------------------------------------------:::----------:::-==-=-----------:::::::::::::::::::::::::::::::::::::::::::                          ........    ..   .                                                                                                     ........      ............. ................................................................................................:::::::------:::......................................::::--------------::::::::::---=============================++++++++================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::---==========+++***####******+++++++++++******++==----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................                                             ............................................................................................................................................:::---=============================================================--:::.........................................................................................::-==+++++++==--:::::::..............................................................................................:::::::::::::-------::::::.......................................................................................:::::::::::--=============+++**#########################################################################################****************************************************************************#################*******************##################********************#########################################*******################################################################################################################################****************************************************************###############################****##########################################*********************************************************************#############################************##################**************+++=======================================+++****************************************************************++++++++++++++++++++++++++++++++++=============================================--
*******************************++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::::--------------------------------------------------===-==================================================================+++++++++++++++++++++==================================================================-------------::::::...............................................................................................=#######+:.....:::################%%%%%%%%%%%%%%%%%%%%%%%%################%%%%########################################################%%%.....-##%%%%######%%%%%%%%%%##:.:*%###%#*:.:..........:=%%%%#:.:%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%+=======--------------------------------------------------------------------------:::::::::::::::::::::::::::..........                                   -+++=-----::::::::::::::::::::::---------------------------------------------:::---------:::-=-==-==---=--:::::::::::::::::::::::::::::::::::::::::::::.                          ....                                                                                                                   .......       ............................................................................................................::::::--------::::......................................:::---------------:::::::----===============================++++++++===============================================================================================================================----------------------------------------------------------===------------------------------------------------------------------------------------------------------------------------------------------:::::::::::---==========+++**######******++++++++********++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................ ..                                             ............................................................................................................................................:::---=============================================================--:::.........................................................................................::--=++++++==---::::::::...........................................................................................::::::::::::::--------::::::........................................................................................::::::::::--==============++**########################################################################################*****************************************************************************#################******************###################********************#####################################################################################################*#####################*****************#################################****************************************************************################################################################################*******************************************************************#####################################****########################**********+++=======================================+++****************************************************************++++++++++++++++++++++++++++++++++==============================================-
*******************************++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::::--------------------------------------------------========================================================================++======+++++++++++===================================================================------------::::::...............................................................................................-#######+:........+################%%%%%%%%%%%%%%%%%%%%%%%################%%%%########################################################%%%:....:##%%%#######%%%%%%%%%%%#:::#%#####*:.............-%%%%#:.=%@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%+=======--------------------------------------------------------------------------:::::::::::::::::::::::::::..........                                   -+++=------:::::::::::::::::::::---------------------------------------------:::----------::---==---===--:::::::::::::::::::::::::::::::::::::::::::::::                           ...                                                                                                                   .......       ...........................................................................................................:::::-----------:::......................................:::----------------:::::---=================================++++++++===============================================================================================================================----------------------------------------------------------===-------------------------------------------------------------------------------------------------------------------------------------------::::::::::---==========+++**#######*******++*+**********++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................... ..                                             ............................................................................................................................................:::---============================================================---:::.........................................................................................::--=++++++==--:::::::::...........................................................................................:::::::::::::---------::::::........................................................................................::::::::::--==============++**#########################################################################################****************************************************************************#################*******************#################**********************#################################################################################################**************#####***************************########################*********************************************************************##################################################################################*****************************************************************##################################################################*********+++=======================================+++*****************************************************************++++++++++++++++++++++++++++++++++=============================================-
*******************************+++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::-------------------------------------------------====================================================================================++++++++=====================================================================----------:::::................................................................................................:#######+:........-################%%%%%%%%%%%%%%%%%%%%%%%################%%%%########################################################%%%:.....*%%%%#######%%%%%%%%%%%*:::%%####%+..............-%%%%#:.+%@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%#=======---------------------------------------------------------------------------:::::::::::::::::::::::::::..........                                   :++++------::::::::::::::::::::::---------------------------------------------:::----------::--==--=---:::::::::::::::::::::::::::::::::::::::::::::::::.                                                                                                                                                .......       ..........................................................................................................::::-------------:::......................................::::----------------------==================================++++++++===============================================================================================================================----------------------------------------------------------===-==-----------------------------------------------------------------------------------------------------------------------------------------:::::::::---==========+++**########********************++=----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................... ..                                          ...............................................................................................................................................::::--============================================================--::::.........................................................................................::--=++++++==--:::::::::...........................................................................................:::::::::::::---------::::::........................................................................................::::::::::--==========-===++**#########################################################################################****************************************************************************##################******************#################**********************##############################################################################################**************************************************************************************************************************************#############################################################################################*********************************************************########################################################################**#*****++========================================+++*****************************************************************++++++++++++++++++++++++++++++++++++============================================
*******************************++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+--*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::-------------------------------------------------=====================================================================================++++++========================================================================--------:::::................................................................................................:#######+:........:################%%%%%%%%%%%%%%%%%%%%%%%################%%%%########################################################%%%:.....=%%%%%######%%%%%%%%%%%+::-%%#####=..............-%%#%#:.#@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%*=======----------------------------------------------------------------------------::::::::::::::::::::::::::..........                                   .++++=-----:::::::::::::::::::::::--------------------------------------------:::--------------------::::::::::::::::::::::::::::::::::::::::::::::::::::                                                                                                                                                .......        ... .....................................................................................................::::-------------:::......................................::::----------------------==================================++++++++===============================================================================================================================----------------------------------------------------------=====-------------------------------------------------------------------------------------------------------------------------------------------::::::::---==========+++**#########*******************++=----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................ ..                                         .................................................................................................................................................:::--============================================================--:::..........................................................................................::--==+++++==--:::::::::...........................................................................................::::::::::::----------::::::........................................................................................::::::::::--==========--==++**##########################################################################################***************************************************************************##################******************################************************###########################################################################################***********************************************************************************************************************************###**################################################################################################****************************************************#############################################################################*****++========================================+++******************************************************************+++++++++++++++++++++++++++++++++++============================================
*******************************+++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*-:...=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::---------------------------------===-------------========================================================================================+++==========================================================================-------::::.................................................................................................:#######*:.......::################%%%%%%%%%%%%%%%%%%%%%%%#################%%%%#######################################################%%%:.....-#%%%%##%%##%%%%%%%%%%%=:.=%###%##-............:.:#%%%%.:%@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%*=======-----------------------------------------------------------------------------::::::::::::::::::::::::::..........                                   .++++=------:::::::::::::::::::::::--------------------------------------------:::----------:-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::.                                                                                                                                               .......             ...........................:::::::::::..............................................................:::--------------:::......................................:::::--------------------===================================++++++++===============================================================================================================================----------------------------------------------------------==----------------------------------------------------------------------------------------------------------------------------------------------:::::::---===========+++**###########*************#***++=----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................                                        .................................................................................................................................................:::---==========================================================---:::..........................................................................................:::-==+++++==--::::::::::.........................................................................................::::::::::::----------:::::::........................................................................................::::::::::--=========---==++**##########################################################################################***************************************************************************##################******************################************************########################################################################################*************************************************************************************************************************************#########################################################################################################################################*****************#############################################################################*****++=========================================++******************************************************************++++++++++++++++++++++++++++++++++++===========================================
********************************++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+-::::.....*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::-------------------------------=====-------------=======================================================================================================================================================================-----::::..................................................................................................#######*:.......::*###############%%%%%%%%%%%%%%%%%%%%%%%#################%%%%#######################################################%%%-.....:#%%%%#%%%##%%%%%%%%%%%-::+%%%####:............:..+%%%%.=%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%#+======------------------------------------------------------------------------------::::::::::::::::::::::::::..........                                    ++++=-------:::::::::::::::::::::::--------------------------------------------::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                                                                                                                                               .......             ..........................::::::::::::::::..........................................................:::--------------:::......................................::::::-------------------===================================++++++++===============================================================================================================================-----------------------------------------------------------=-----------------------------------------------------------------------------------------------------------------------------------------------:::::----===========+++**##############*********##***+==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................                                       ..................................................................................................................................................:::---==========================================================---:::..........................................................................................:::-==++++==---::::::::::........................................................................................:::::::::::::----------:::::::........................................................................................::::::::::--=========---==++***########################################################################################****************************************************************************##################******************################************************####################################################################################****************************************************************************************************************************************###########################################################################################################################################**************###############################################################################****+++=========================================++*******************************************************************++++++++++++++++++++++++++++++++++++==========================================
********************************+++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+--::::::::::...*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::------------------------------=====--------------======================================================================================================================================================================-----:::::..................................................................................................*######*-.......::=###############%%%%#%%%%%%%%%%%%%%%%%%#################%%%%#######################################################%%%-......*%%%%%%%%##%%%%%%%%%%%-.:*%%%##%*:.:.........:..::#%%%:*@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%*=======------------------------------------------------------------------------------::::::::::::::::::::::::::..........                                    +++++-------:::::::::::::::::::::::::-------------------------------------------:-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                                                                                                                                              .......              .........................::::::::::::::::::........................................................:::--------------:::......................................::::::------------------====================================++++++++===============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:-----============+++**################******###***+==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................                                       ...................................................................................................................................................::---==========================================================--:::.....................................................................:::::.................:::-==++++==---::::::::::.....................................................................................::::::::::::::::---------::::::::........................................................................................::::::::::--=========----==+***######################################################################################******************************************************************************##################******************###############*************************################################################################***********************************************************************************************************************************************************############################################################################################################################################*********####################################################################################****++==========================================++*******************************************************************+++++++++++++++++++++++++++++++++++++=========================================
********************************++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=-:-::-:::::::::....#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::------------------------------=====--==----------=====================================================================================================================================================================------::::...................................................................................................+#######-......::.-###############%%%%#%%%%%%%%%%%%%%%%%%#################%%%%#######################################################%%%-......=%%%%%%%%%#%%%%%%%%%%%-.:#%##%#%+..:.........:.:::%%%%:#@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%+=======------------------------------------------------------------------------------::::::::::::::::::::::::::..........                                    +++++-------:::::::::::::::::::::::::-------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                                                                                                                                              .......              .........................::::---------:::::::......................................................:::--------------:::......................................::::::------------------====================================++++++++===============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============+++**###################****#***++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................                                       ...................................................................................................................................................:::--=========================================================---:::....................................................................:::::::.................::--=++++==--:::::::::::....................................................................................:::::::::::::::::---------::::::::........................................................................................::::::::::--=========----==+***###################################################################################*********************************************************************************##################******************###############*************************############################################################***************************************************************************************************************************************************************############################################################################################################################################********#####################################################################################****++==========================================++*******************************************************************+++++++++++++++++++++++++++++++++++++=========================================
********************************+++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+-:::::::::::::::::::...#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::---------------------------------------------------==================================================================================================================================================================------:::::....................................................................................................=#######-........::###############%%%%##%%%%%%%%%%%%%%%%%#################%%%########################################################%%%-......-#%%%%%%%%%%%%%%%%%%%%:.:#######=...:..........:.:#%%#-%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%#=======-------------------------------------------------------------------------------::::::::::::::::::::::::::..........                                    +++++=-------::::::::::::::::::::::::::------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                                                                                                                                             ........             .........................::::-----------:::::::....................................................::---------------:::......................................::::::-----------------======================================+++++++===============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============+++**###################********++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::...........           ....                    ......................................................................................................................................................:::---========================================================---:::...................................................................::::::::.................::--==+++==--::::::::::::...................................::::::::::::................................::::::::::::::::::::----------::::::::.......................................................................................:::::::::::---=======-----==+***#############################################################################***************************************************************************************##################******************###############***********************#########################################################******************************************************************************************************************************************************************##########*################################################################################################################################################################################################################################****++==========================================++********************************************************************++++++++++++++++++++++++++++++++++++++=======================================
********************************+++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-:::::::::::::::::::::.:..=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::---------------------------------------------------=================================================================================================================================================================------:::::.....................................................................................................-#######-.......:::*##############%%%%##%%%%%%%%%%%%%%%%%#################%%%########################################################%%%-......:#%%%%%%%%%%%%%%%%%%%%:.-%%#####-..:.........:...:%%%%+@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%#=======-------------------------------------------------------------------------------::::::::::::::::::::::::::..........                                    +++++=-------:::::::::::::::::::::::::::-----------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                                                                                                                                            ........             ..........................:::-------------:::::::.................................................:::---------------:::......................................::::::-----------------======================================+++++++===============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============+++**##################*********++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................:::...........           .....                  .......................................................................................................................................................:::---========================================================--:::....................................................................::::::::.................:::-==++===--::::::::::::...................................::::::::::::................................::::::::::::::::::::---------::::::::::......................................................................................:::::::::::---=======-----==+***###########################################################################*****************************************************************************************##################*******************##############**********************###################################################*************************************************************************************************************************************************************************###########################################################################################################################################################################################################################################****++==========================================++*********************************************************************++++++++++++++++++++++++++++++++++++++======================================
+*******************************++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=::::::::::::::::::::::::::.:.:%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::---------------------------------------------------==============================================================================================================================================================-------:::::.......................................................................................................:#######=......:::.+##############%%%%##%%%%%%%%%%%%%%%%##################%%%########################################################%%#-.......+%%%%%%%%%%%%%%%%%%%%:.=%#####*:.::.........:...:%%%%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%*========------------------------------------------------------------------------------::::::::::::::::::::::::::..........                                    =++++=--------:::::::::::::::::::::::::::-----------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                                                                                                                                            ........              .........................:::----------------::::::...............................................:::---------------:::......................................::::::----------------=======================================+++++++===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============+++**##################*********++=---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................::::..........         .................................................................................................................................................................................::---=======================================================---:::...................................................................:::::::::.................:::-======---::::::::::::..................................::::::::::::::...............................::::::::::::::::::::---------::::::::::......................................................................................:::::::::::--========-----==++**##########################################################################******************************************************************************************###################******************###############******************#################################################*****************************************************************************************************************************************************************************############################################################################################################################################################################################################################################***+++==========================================++**********************************************************************+++++++++++++++++++++++++++++++++++++======================================
++++****************************+++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-::--:::--:----:::::::::::::::...=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::----------------------------------------------------===========================================================================================================================================================-------::::::.........................................................................................................#######=......:::.-##############%%%%##%%%%%%%%%%%%%%%%##################%%%#######################################################%%%*:.......=%%%%%%%%%%%%%%%%%%%%:.+%#####*:::.:........:...:%%%%%@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%+========------------------------------------------------------------------------------::::::::::::::::::::::::::..........                                    -++++=--------::::::::::::::::::::::::::::-----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                                                                                                                                           ........              .........................::::-----------------::::::::...........................................:::---------------:::......................................::::::----------------=======================================+++++++===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===============+++**#################**********++=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................:::::..........         .................................................................................................................................................................................:::--=======================================================---:::...................................................................:::::::::.................:::--=====--::::::::::::::................................::::::::::::::::..............................::::::::::::::::::::-------:::::::::::::.....................................................................................:::::::::::--========-----==++**#####################################################################***********************************************************************************************###################******************################************##################################################*********************************************************************************************************************************************************************************###########################################################################################################################################################################################################################################****+++==========================================++**********************************************************************+++++++++++++++++++++++++++++++++++++++====================================
+++++***************************++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*-:::--::---::::::::::::::::::::::....*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::----------------------------------------------------========================================================================================================================================================-------:::::::...........................................................................................................#######=......:::.:##############%%%%###%%%%%%%%%%%%%%%###################%%%######################################################%%%*:.......-#%%%%%%%%%%%%%%%%%%%:.*%#####+:::.:..........:..#%%%@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%#+========------------------------------------------------------------------------------::::::::::::::::::::::::::..........                                    :++++=---------::::::::::::::::::::::::::::----------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                                                                                                                                           ........              .........................::::-------------------:::::::::........................................::----------------:::......................................::::::---------------========================================+++++++===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===============+++**#################**********+==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................:::::..........      ....................................................................................................................................................................................:::--=======================================================--:::....................................................................::::::::...................::--=====--::::::::::::::...............................:::::::::::::::::..............................:::::::::::::::::::::----:::::::::::::::.....................................................................................:::::::::::--========-----==++**###################################################################*************************************************************************************************###################******************#################*****######################################################*********************************************************************************************************************************************************************************#############################################################################################################################################################################################################################################****++===========================================++***********************************************************************++++++++++++++++++++++++++++++++++++++====================================
+++++***************************+++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@#+-::--:::::--:::-:::::::::::::::::::....=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::----------------------------------------------------======================================================================================================================================================-------:::::::.............................................................................................................*######+......:::::##############%%%%%##%%%%%%%%%%%%%%%###################%%%#######################################################%%+-.......:#%%%%%%%%%%%%%%%%%%%::#%#####=:.:.:..........:..#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%*=========------------------------------------------------------------------------------::::::::::::::::::::::::::..........                                    :+++++----------::::::::::::::::::::::::::::----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::.                                                                                                                                          .........              .........................:::---------------------::::::::::.....................................:::---------------:::......................................::::::--------------==========================================+++++================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============+++**#################**********+==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::.........     .....................................................................................................................................................................................:::---=====================================================---:::.....................................................................::::::....................:::--===---::::::::::::::...............................::::::::::::::::::.............................:::::::::::::::::::::--:::::::::::::::::.....................................................................................:::::::::::--========------=++**###############################################################*****************************************************************************************************###################******************#########################################################################************************************************************************************************************************************************************************************#############################################################################################################################################################################################################################################****++===========================================++***********************************************************************+++++++++++++++++++++++++++++++++++++++===================================
+++++***************************++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@@@%%%*=-:-::--:---:::::::::::::::::::::::::::.::=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::-----------------------------------------------------==================================================================================================================================================------:::::::::...............................................................................................................*######+.......:::.*#############%%%%%##%%%%%%%%%%%%%%####################%%%#######################################################%%+-.......:*%%%%%%%%%%%%%%%%%%%::#%#####-::::.::::::::.....#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%#+=========------------------------------------------------------------------------------::::::::::::::::::::::::::..........                                    .+++++----------::::::::::::::::::::::::::::::---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..::                                                                                                                                          .........              .........................::::-----------------------::::::::::.................................::::---------------:::......................................::::::-------------===========================================++++=================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============+++**#################**********+==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::.........     ..........                   ........................................................................................................................................................:::---=====================================================--::::......................................................................:::......................:::-------:::::::::::::::..............................:::::::::::::::::::.............................::::::::::::::::::::::::::::::::::::::::.....................................................................................:::::::::::--========------==+**#############################################################*******************************************************************************************************####################*****************#######################################################################*************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################***+++===========================================++************************************************************************+++++++++++++++++++++++++++++++++++++++==================================
+++++***************************++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%*==--::-::--:----::::::::::::::::::::::::::::::::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@%%%%@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::----------------------====---------------------------===========================================+================================================================================================----------:::::::...................................................................................................................+######+:......:::.=#############%%%%%###%%%%%%%%%%%%%####################%%%#######################################################%%=-........+#%%%%%%%%%%%%%%%%%%::%%#####:.:.:.::::::::.....%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%#+=========------------------------------------------------------------------------------::::::::::::::::::::::::::..........                                    .+++++----------:::::::::::::::::::::::::::::::--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::..  ..::                                                                                                                                         .........               ..  ....................::::--------------------------::::::::::::............................::::---------------:::......................................::::::------------=============================================+++=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========+++**#################*********++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::.........     .... ....                     ........................................................................................................................................................:::--====================================================---:::.................................................................................................:::------:::::::::::::::..............................::::::::----:::::::::::.........................::::::::::::::::::::::::::::::::::::::::.....................................................................................:::::::::::--=======-------==+**###########################################################*********************************************************************************************************####################*****************##################################################****************#*****************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################***+++===========================================++*************************************************************************+++++++++++++++++++++++++++++++++++++++=================================
+++++***************************+++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@@@@@@@@@#+::::::::----------::::::::::::::::::::::::::::....:%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------===========--==------=--------=---===-====================================++=+=========================================================================================---------------::::::......................................................................................................................=######*:......:::::#############%%%%####%%%%%%%%%%%%%%###################%%%#######################################################%%=-.......:=#%%%%%%%%%%%%%%%%%%:-%#####*:::::::::::::.....:%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%#*++========------------------------------------------------------------------------------::::::::::::::::::::::::::..........                                     +++++=----------:::::::::::::::::::::::::::::::--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::.   ..::.                                                                                                                                        .........                     ...................::::--------------------------:::::::::::::::........................::::---------------:::......................................::::::-----------=================================================================================================================================================================================------------------------------------------------------------=-==-----------------------------------------------------------------------------------------------------------------------------------------------------------=====++***################**********++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........ .     ......                         ......................................................................................................................................................:::--===================================================---::::.................................................................................................::::----::::::::::::::::.............................:::::::------:::::::::........................:::::::::::.::::::::::::::::::::::::::::::.:....................................................................................:::::::::::--=======-------==+***########################################################***********************************************************************************************************####################*****************#################*################**************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################***+++===========================================++*************************************************************************+++++++++++++++++++++++++++++++++++++++=================================
+++++***************************++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@%@@@#=:.::::::::::--------:::::::::::::::::::::::::::......+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+:::::::::::::::::::::::::::::::::::::::::::::::::::::::..::::::------------------=============-----=====---======--========================================+==========================================================================================--------------:::::::........................................................................................................................-######*:......:::::#############%%%%####%%%%%%%%%%%%%%###################%%%#######################################################%%=-.......:=#%%%%%%%%%%%%%%%%%%:=%#####+:..:::::::::......-%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%#*++========------------------------------------------------------------------------------::::::::::::::::::::::::::..........                                     +++++=-----------:::::::::::::::::::::::::::::::-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::.    ..::                                                                                                                                        .........                         ................::::------------------------::::::::::::::::::::::::::.............:::::---------------:::......................................::::::---------=================================================+=================================================================================================================================---------------------------------==------------------------=====------------------------------------------------------------------------------------------------------------------------------------------------------------====++***################**********++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........ .     ...........                   .......................................................................................................................................................:::--==================================================----:::...................................................................................................:::::::::::::::::::::::.............................::::::--------::::::::.......................::::::::::::.::::::::::::::::::::::::::::::::....................................................................................:::::::::::--=======-------==+***########################################################***********************************************************************************************************####################*******************#############*******************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################****+++===========================================++**************************************************************************+++++++++++++++++++++++++++++++++++++++================================
+++++***************************+++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**++*@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@#=:..::::::::::::::::::::::::::::::::::::::::::::::......:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::::------------------========================================================================+=========================================================================================-------------:::::::...........................................................................................................................:######*:......::::.*############%%%%#####%%%%%%%%%%%%%%##################%%%#######################################################%%+-.......:-*#%%%%%%%%%%%%%%%%%:+%#####=::::::::::::..:...*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%#+++========------------------------------------------------------------------------------::::::::::::::::::::::::::..........                                     +++++=-----------::::::::::::::::::::::::::::::::-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::.     .::.                                                                                                                                       .........                          ................:::::--------------------:::::::::::::::::::::::::::::::::::::::::::::----------------:::......................................::::::---------=================================================+=================================================================================================================================---------------------------------==------------------------====-------------------------------------------------------------------------------------------------------------------------------------------------------------====++***################**********++=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........ .     .....................................................................................................................................................................................:::---================================================----::::....................................................................................................::::::::::::::::::::::............................:::::::--------::::::::......................:::::::::::::.::::::::::::::::::::::::::::::::....................................................................................:::::::::::--=======-------==+***########################################################***********************************************************************************************************#####################********************########**********************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################****++============================================++**************************************************************************+++++++++++++++++++++++++++++++++++++++================================
++++****************************++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@#=:...:::::::::::::::::::::::::::::::::::::::::::::::.......#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@*::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::-----------------================================================================================================================================================================-----------::::::::..............................................................................................................................######*:......::::.=############%%%%#####%%%%%%%%%%%%%%##################%%%%######################################################%%+-.......:-+#%%%%%%%%%%%%%%%%#:*%#####-::::::::::::......-%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%#++++=======-------------------------------------------------------------------------------:::::::::::::::::::::::::..........                                     +++++=-----------::::::::::::::::::::::::::::::::::------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::...:::.     .:::                                                                                                                                       .........                         ..................:::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::-----------------:::......................................:::::::--------=================================================++================================================================================================================================--------------------------------====--=--------------------====--==----------------------------------------------------------------------------------------------------------------------------------------------------------===++***################**********+==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........  .    .....................................................................................................................................................................................:::---===============================================----::::......................................................................................................:::::::::::::::::::::............................::::::----------:::::::....................::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................:::::::::::--=======-------==+***########################################################***********************************************************************************************************#####################**************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################****++============================================++***************************************************************************+++++++++++++++++++++++++++++++++++++++===============================
++++***************************++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++*@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%+:.....::::::::::-::::::::::::::::::::::::::::::::::::.......=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=:::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::-------------==============================================================================================================================================================---------:::::::.................................................................................................................................*#####*:......:::::-############%%%%#####%%%%%%%%%%%%%%##################%%%%######################################################%%+=.......::+#%%%%%%%%%%%%%%%%#-#%#####::.::::::::::......-%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%*++++=======-------------------------------------------------------------------------------:::::::::::::::::::::::::..........                                     ++++++------------:::::::::::::::::::::::::::::::::---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::.....:..   ..::::                                                               . ...                                                                  ..........                    .......................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------:::......................................:::::::--------=================================================+++===============================================================================================================================--------------------------------====--=--------------------=----===----------------------------------------------------------------------------------------------------------------------------------------------------------===++***################*********++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........  ..    .....................................................................................................................................................................................:::--=============================================-----::::........................................................................................................::::::::::::::::::::............................::::::----------:::::::...................::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................:::::::::::--=======-------==++**########################################################************************************************************************************************************####################**************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################****+++===========================================+++***************************************************************************+++++++++++++++++++++++++++++++++++++++===============================
*******************************+++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++%@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%+-.......:::::::::::::::::::::::::::::::::::::::::::::::........#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::--------------======================================================================================================================================================-------::::::::...................................................................................................................................*#####*:......::::::#############%%%######%%%%%%%%%%%%%%#################%%%%######################################################%%+=........:=#%%%%%%%%%%%%%%%%#-#%####+::.::::::::::......=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%#*++++=======------=-------------------------------------------------------------------------::::::::::::::::::::::::.........                                      ++++++-------------::::::::::::::::::::::::::::::::::-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::..  ..:...  ..::::.                                                                ....                                                                  .........                    ..........................:::::::::::::::::::::............:::::::::::::::----------------------------------:::.....................................:::::::--------=================================================++++==============================================================================================================================-------------------------------======-=--------------------------=-----------------------------------------------------------------------------------------------------------------------------------------------------------===+++**################*********++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........  ..     ....................................................................................................................................................................................:::---===========================================----:::::..........................................................................................................:::::::::::::::::::............................::::::----------:::::::...................:::::::::::::::::::::::::::::::::::::::::::::::......................................................................................::::::::::--========-------==++**########################################################************************************************************************************************************####################*************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################****+++===========================================+++***************************************************************************+++++++++++++++++++++++++++++++++++++++===============================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#*******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++#@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@@%*-::.......:::::::::::::::::::::::::::::::::::::::::::::::........-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------==============================================================================================================================================-------:::::::......................................................................................................................................+#####*:......:::::.*############%%%######%%%%%%%%%%%%%%##################%%%######################################################%%+=........:=*%%%%%%%%#%%%%%%%%-%%####=::::::::::::.......*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%#++++========-----=======--------------------------------------------------------------------::::::::::::::::::::::::.........                                      ++++++-------------:::::::::::::::::::::::::::::::::::------------------------------------------------::::::::::::::::::::::::::::::::::::::::::..  .:......::::::                                                               ......                                                                 .........                      ...............................:::::::::......................:::::::::::---------------------------------:::.....................................:::::::-------==================================================++++==============================================================================================================================-------------------------------======--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::----====++**################*********++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........  ..      ........                   ........................................................................................................................................................:::---==========================================----:::::............................................................................................................::::::::::::::::::............................:::::-----------:::::::...................:::::::::::::::::::::::::::::::::::::::::::::.......................................................................................:::::::::::--========-------==++**########################################################************************************************************************************************************###################*************************************************************************************************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################****+++===========================================+++****************************************************************************+++++++++++++++++++++++++++++++++++++++==============================
*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#######****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++**+++*@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%#=-:::.......:::::::-:::::::::::::::::::::::::::::-:::::::::.........+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------=========+++==============================================================================================================================-----:::::::........................................................................................................................................+#####*:......::::::*############%%%######%%%%%%%%%%%%%%##################%%%######################################################%%+=........:-+%%%%%%%%#%%%%%%%%=%%####=::.::::::..:.......%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%#++++========----=========--------------------------------------------------------------------:::::::::::::::::::::::.........                                      ++++++-------------:::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::::::::::::::::::::::::::::::::::..  .:::....::::::.                                                              .......                                                                .........                           ............................................................:::::::::---------------------------------:::....................................:::::::-------==================================================++++==============================================================================================================================------------------------------========-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::----===++**################*********++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........  ..                                  .......................................................................................................................................................:::---==========================================---:::::.............................................................................................................::::::::::::::::::............................:::::-----------:::::::..:................::::::::::::::::::::::::::::::::::::::::::::........................................................................................:::::::::::--=======--------==++**########################################################************************************************************************************************************###################*************************************************************************************************************************************************************************************************************************************************************************########**######################################################################################################################################################################################################################################****++============================================+++****#***********************************************************************++++++++++++++++++++++++++++++++++++++++=============================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************###############***********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@#+=--:::.......::::::::::::::::::::::::::::::::::::--::::::::::........:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::::::::::::--------------------======++++===========================================================================================================================-----:::::::..........................................................................................................................................=#####*:......::::::+############%%%#######%%%%%%%%%%%%%%#################%%%######################################################%%+=....:...:-+#%%%#%%%%%%%%%%%%=%%####-:::.:::.:.::......-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%#++++=====================---------------------------------------------------------------------::::::::::::::::::::::........                                       ++++++=-------------:::::::::::::::::::::::::::::::::::::---------------------------------------------------::::::::::::::::::::::::::::::::::::......:::::::::::::.                                                            .........                                                               .........                                ..........................................................::::::::-------------------------------:::....................................:::::::-------==================================================+++===============================================================================================================================--------------------------------====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::---===++**###############*********+++=----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::......... ...             .               ..  ........................................................................................................................................................::---=========================================---::::................................................................................................................:::::::::::::::::...........................::::::-----------:::::::.:.................:::::::::::..::::::::::::::::::::::::::::::::.......................................................................................:::::::::::--=======--------==++**########################################################************************************************************************************************************####################***********************************************************************************************************************************************************************************************************************************************************************#####******######################################################################################################################################################################################################################################****++============================================++******************************************************************************+++++++++++++++++++++++++++++++++++++++=============================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************#####################******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@%%*+==--:::.......:::::::::::::::::::::::::::::::::::::::::::::::.:....:...-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::::::-----------=====++++=========================================================================================================================------::::::............................................................................................................................................-######:......::::::+############%%%#######%%%%%%%%%%%%%%#################%%%######################################################%%+=........:-=#%%%#%%%%%%%%%%%%=%####*:::::::::.:........*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%*++++======================--------------------------------------------------------------------::::::::::::::::::::::........                                       ++++++=-------------::::::::::::::::::::::::::::::::::::::----------------------------------------------------:::::::::::::::::::::::::::::::::::....:::::::::::::::                                                           ...........                                                              .........                                ............................................................::::::::------------------------------:::...................................:::::::-------==================================================++++==============================================================================================================================--------------------------------====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::----==++***##############*********+++=----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::......... ...                     ....................................................................................................................................................................:::--=========================================---::::....................................................................................:............................::::::::::::::::...........................::::::-----------:::::::.:.................::::::::::....::::::::::::::::::::::::::::::.......................................................................................::::::::::::--=======--------==++**########################################################************************************************************************************************************####################**********************************************************************************************************************************************************************************************************************************************************************#####*******######################################################################################################################################################################################################################################****++===========================================+++******************************************************************************+++++++++++++++++++++++++++++++++++++++=============================
*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************########################****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%@@@%@%%#+++==--:::.......::::::::::::::::::::::::::::::::::::::::::::--::::.:..:...-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::...::::::::::::::::::::-------====+++=======================================================================================================================------::::::..............................................................................................................................................-######::......:::::-############%%%#######%%%%%%%%%%%%%%#################%%%######################################################%%+=........:-=#%%%%%%%%%%%%%%%%+%####+:.::::::::.::.....:%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%#*++++=======================-------------------------------------------------------------------::::::::::::::::::::::........                                       ++++++=--------------::::::::::::::::::::::::::::::::::::::----------------------------------------------------::::::::::::::::::::::::::::::::::::.::::::::::::::::.                                                          .....:::....             ....                                            .........                                          .....................................................:::::::----------------------------:::...................................:::::::-------==================================================++++==============================================================================================================================--------------------------------====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::---===+***##############********+++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::......... ...                  .......................................................................................................................................................................:::---========================================---:::...................................................................................::::...........................::::::::::::::::...........................::::::-----------:::::::.:.................:::::::::......::::::::::::::::::::::::::::........................................................................................::::::::::::--=======--------==++**########################################################************************************************************************************************************####################**********************************************************************************************************************************************************************************************************************************************************************####********######################################################################################################################################################################################################################################****++===========================================+++*******************************************************************************+++++++++++++++++++++++++++++++++++++++============================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**************###########################***************************************************************+++++++++++*****+++++++++++++++++++++++++++++++++++++++*%@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%@@%%%%%#*+++===--:::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::.::...=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::...:::::::::::::::::::::::-----====+======================================================================================================================-----:::::::................................................................................................................................................-######::......::::::############%%%#######%%%%%%%%%%%%%%%################%%%######################################################%%+=.........-=*%%%%%#%%%%%%%%%%#%####=:::::::::::.......-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%#+++++========================------------------------------------------------------------------::::::::::::::::::::::........                                       ++++++=---------------:::::::::::::::::::::::::::::::::::::::---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::.                                                         ....:::::...             .........                                       .........                                         ...... ..................................................:::::::-------------------------:::...................................:::::::-------==================================================++++==============================================================================================================================--------------------------------====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::----==++**##############********+++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::......... ...                 ........................................................................................................................................................................:::---========================================---:::..................................................................................::::::...........................:::::::::::::::...........................::::::-----------:::::::.:.................::::::::::....:::::::::::::::::::::::..............................................................................................::::::::::::--=======--------==++***########################################################***********************************************************************************************************####################*********************************************************************************************************************************************************************************************************************************************************************#####********######################################################################################################################################################################################################################################****++===========================================+++********************************************************************************++++++++++++++++++++++++++++++++++++++============================
*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++*************##############################**************************************************************++++++++********++++++++++++++++++++++++++++++++++++++#@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%@%#*+++++===--::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::..=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::...:::::::::::::::::::::::::----========================================================================================================================-----:::::::..................................................................................................................................................:######-:......::::::############%%%########%%%%%%%%%%%%%%%###############%%%######################################################%%+=:........-=+#%#%%#%%%%%%%%%#######-::::::::.::......-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%#+++++========================-------------------------------------------------------------------:::::::::::::::::::::........                                       +*++++=---------------:::::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::::::::::::::::::::::::....:::::::::::::::::::::::                                                         ....::::::...            .............                                   .........                                          ..........................................................:::::::-----------------------:::...................................:::::::-------==================================================++++==============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::---==++**##############*******++++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................::::::......... ...                 .........................................................................................................................................................................:::--========================================---:::..................................................................................::::::...........................::::::::::::::.............................:::::-----------:::::::::.........................:::::::::::::::::::::::::::................................................................................................::::::::::::--=======--------==++***########################################################***********************************************************************************************************####################*********************************************************************************************************************************************************************************************************************************************************************####**********#####################################################################################################################################################################################################################################****++==========================================+++*********************************************************************************+++++++++++++++++++++++++++++++++++++++===========================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++*************#################################*************************************************************++++++**********++++++++++++++++++++++++++++++++++++*%@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%@%%%#*++++++===---::.......:::::::::::::::::::::::::::::::::::::-::::::::::::::::::::::::=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::....::::::::::::::::::::::::::---=======-----=========================================================================================================-----::::::.....................................................................................................................................................:######-:......::::::*###########%%%########%%%%%%%%%%%%%%%###############%%%######################################################%%+=:........:=+##%%%#%%%%%%%%%%######:::::::::::......=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%*++++++==========================-----------------------------------------------------------------::::::::::::::::::::........                                      .+*++++=----------------::::::::::::::::::::::::::::::::::::::::----------------------------------------------------:::::::::::::::::::::::......:::::::::::::::::::::::                                                        ....::::::...            .................                               .........             ...                           ............................................................::::::---------------------:::...................................:::::::-------===================================================+++==============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::----==+***#############******++++==----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................::::::......... ....               ..........................................................................................................................................................................:::--===========================--===========---:::.................................................................................::::::::...........................:::::::::::::.............................:::::-----------::::::::::........................::::::::::::::::::::::::::................................................................................................:::::::::::::--======---------==++***#########################################################***********************************************************************************************************###################********************************************************************************************************************************************************************************************************************************************************************####***********#####################################################################################################################################################################################################################################****+++=========================================+++*****#****************************************************************************++++++++++++++++++++++++++++++++++++++===========================
*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++************##################################***************************************************************+++***********+++++++++++++++++++++++++++++++++++++%@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%@%*++++++++====--::.......:::::::-:::::::::::::::::::::::::::::-:::::::::::::::::::::::::-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::....::::::::::::::::::::::::::----===----------------===================--=========================================================================------::::::.......................................................................................................................................................:######=::.......::::+###########%%%########%%%%%%%%%%%%%#%###############%%%######################################################%%+=:........:=+##%%%%%%%%%%%%%%#####*::::::::::::....+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%#*++++++===========================----------------------------------------------------------------::::::::::::::::::::........                                      .+*+++++----------------:::::::::::::::::::::::::::::::::::::::::----------------------------------------------------::::::::::::::::::::::..  ..::::::...::::::::::::::.                                                       ....:::::::..            .....................                          ..........             ...                             .............................................................::::::------------------:::...................................::::::::------====================================================+===============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::---==++***############******++++==----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................::::::......... ....              ...........................................................................................................................................................................:::---========================-----===========--:::.................................................................................::::::::............................::::::::::::.............................::::------------::::::::::........................::::::::::::::::::::::::::................................................................................................::::::::::::---======---------==++***#########################################################***********************************************************************************************************#########**########********************************************************************************************************************************************************************************************************************************************************************####***********#####################################################################################################################################################################################################################################****+++========================================+++******#****************************************************************************+++++++++++++++++++++++++++++++++++++++==========================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++************##################################*****************************************************************************+++++++++++++++++++++++++++++++++++++#@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%@%#+++++++++++==--:::.......:::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----::::....:::::::::::::::::::::::::::---==-----------------------=========----------===================================================================-----:::::::.........................................................................................................................................................:######=::.........:.=###########%%%########%%%%%%%%%%%%%#%###############%%%######################################################%%+=:........:=+##%%#%%%%%%%%%%%%####+:::::::::::...:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%#*++++++============================---------------------------------------------------------------::::::::::::::::::::........                                      .+*+++++-----------------:::::::::::::::::::::::::::::::::::::::::---------------------------------------------------::::::::::::::::::::::..  ..:::::....:::::::::::::::                                                       ...::::-:::...           .........................                      ..........            ....                             ..............................................................:::::::----------------:::...................................::::::::------====================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::----==+***############******++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................::::::........  ....            .............................................................................................................................................................................:::---========================-----===========--:::.................................................................................:::::::::............................:::::::::::.............................::::------------::::::::::.....................:::.::::::.:::::::::::::::::................................................................................................:::::::::::::--=======---------==++***#########################################################************************************************************************************************************######*****#######********************************************************************************************************************************************************************************************************************************************************************####***********#####################################################################################################################################################################################################################################*****++=======================================++++***********************************************************************************+++++++++++++++++++++++++++++++++++++++==========================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++**********#####################################*****************************************************************************++++++++++++++++++++++++++++++++++++%@@@@%%%%%%%%%%%%%@@@@%@@%@@%%@%%%%@%#++++++++++++===--:::.......::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::-----------:-----------------------------------------==========================================================------:::::::...........................................................................................................................................................:######=:..........::-###########%%%########%%%%%%%%%%%%%%%###############%%%######################################################%%+=:........:=+#%%#%#%%%%%%%%%%%####=:.::::::::...:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%#+++++++===============================-------------------------------------------------------------:::::::::::::::::::........                                      .+*+++++-----------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------::::::::::::::::::::..  ...:......:::::::::::::::::                                                      ...::::--::...            ..........................                    .........             ......                            ...............................................................::::::--------------:::....................................::::::::------====================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::---==++***###########******++++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::............           ................................................................................................................................................................................:::---=======================-------==========---:::...............................................................................::::::::::..............................:::::::::.............................::::------------::::::::::.....................:::::::::::::::::::::::::::................................................................................:................:::::::::::::--=======--------===++***###########################################################*************************************************************************************************************#********######*********************************************************************************************************************************************************************************************************************************************************************###************####################################################################################################################################################################################################################################*****+++======================================+++**************************************************************************************++++++++++++++++++++++++++++++++++++++=========================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++*********#######################################****************************************************************************++++++++++++++++++++++++++++++++++++%@@@@@%%%%%%%%%%%@@@@@@@@@@%%@%%@@@#*+++++++++++++===--:::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:-+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::-----------------------------------------------==============================================------:::::::.............................................................................................................................................................:######+:..........:::###########%%%#########%%%%%%%%%%%%%%###############%%%######################################################%%+=:........:=+#%%#%#%%%%%%%%%%%####-:::::::::.:.-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%*++++++================================--------------------------------------------------------------::::::::::::::::::........                                      .+++++++=-----------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::::::::::::::::::..  .........::::::::::::::::::.                                                     ...::::--::...            ...........................                   ..........            ......                            .................................................................::::::-----------:::.....................................::::::::------====================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::----==++**###########******++++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::.............         ..................................................................................................................................................................................:::--=======================--------=========---:::...............................................................................::::::::::...............................::::::::.............................::::------------::::::::::.....................:::::::::::::::::::::::::::.................................................................................................:::::::::::::--=======--------===++***###########################################################**********************************************************************************************************************######*********************************************************************************************************************************************************************************************************************************************************************##*************######################################################################################################################################################################################################################################****+++====================================+++***************************************************************************************++++++++++++++++++++++++++++++++++++++=========================
******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++********#########################################***************************************************************************++++++++++++++++++++++++++++++++++++@@@@@@%%%%%%%%%@@@@@@@@@@%%%%%@@@%*+++++++++++++++===--:::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::-:::=*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::-----------------------=========================================-------::::::................................................................................................................................................................:######+:...........::*##########%%%%########%%%%%%%%%%%%%%###############%%%######################################################%%*=:........:-+#%%%%#%%%%%%%%%%#####::::.:::::..=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%+++++++================================--------------------------------------------------------------::::::::::::::::::........                                      .*++++++=-----------------::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------::::::::::::::::::::..........:::::::::::::::::::::.                                                    ...:::---::...            .............................                 ..........            .....                            .....................................................................:::::---------:::.....................................::::::::------====================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::----==+***##########******++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................::::::.............     .   ..................................................................................................................................................................................:::--=======================--------==========--:::...............................................................................:::::::::::...............................:::::::.............................:::::-----------:::::::::......................:::::::::::::::::::::::::::.................................................................................................:::::::::::::--=======--------===++**#############################################################**********************************************************************************************************************#####*********************************************************************************************************************************************************************************************************************************************************************##*************######################################################################################################################################################################################################################################*****+++==================================+++******##*********************************************************************************++++++++++++++++++++++++++++++++++++++========================
******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++******####################################################******************************************************************+++++++++++++++++++++++++++++++++++*@@@@@@%%%%%%%%@@@@@@@@@%%@%@@@@%*++++++++++++++++====--:::.......:::::::::::::::::::::::::::::::::::::-::::::::::::::::::::::::::-::-::::--=+**#**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::----------------------====================================-------::::::..................................................................................................................................................................:######+:...........::*##########%%%%########%%%%%%%%%%%%%%###############%%%######################################################%%*=:.........-+#%%%%#%%%%%%%%%%%###*:::::::.:..=%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%#++++++===================================-------------------------------------------------------------:::::::::::::::::........                                      .*++++++=------------------::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------::::::::::::::::::::...... ..::::::::::::::::::::::                                                    ...:::---::...             .............................                ..........             ...                             .............. .......................................................::::::------:::......................................::::::::------====================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::---==++***#########******++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................:::::.............     ......................................................................................................................................................................................:::---======================--------==========--:::..............................................................................:::::::::::::..............................::::::::............................:::::-----------::::::::.......................::::::::::::::::::::::::..............................................................................:::::................::::::::::::::-========--------==++***##############################################################**********************************************************************************************************************####*********************************************************************************************************************************************************************************************************************************************************************#**************#######################################################################################################################################################################################################################################****++++================================+++*******#**********************************************************************************++++++++++++++++++++++++++++++++++++++========================
******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++******#####################################################*****************************************************************+++++++++++++++++++++++++++++++++++#@@@@@@%%%%%%%%@@@@@@@@%%@@@@@%*++++++++++++++++++====--:::.......:::::::::::::::::::::::::::::----------:::::::::::::::::::::::::--::-:--::--:---+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@*::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::----------------=============================------::::::....................................................................................................................................................................:######+:...........:.+#########%%%%%#########%%%%%%%%%%%%%###############%%%######################################################%%*=::........:+#%%%%#%%#%%%%%%%%##%+::.::..:.:+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%*++++++====================================-------------------------------------------------------------::::::::::::::::........                                      .*++++++=-------------------::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------:::::::::::::::::::::.....  .::::::::::::::::::::::.                                                   ...:::---::...              ............................                ..........                                           ..........................................................................::::::---::::......................................::::::::------====================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::---==++***########******++++==---:::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................::..............................................................::::::............    .......................................................................................................................................................................................:::---=====================----------=========--::::.............................................................................::::::::::::::.............................::::::::............................:::::-----------:::::::........................:::::::::::::::::::::::............................................................................:::::::::::.............:::::::::::::--========-------===++***##################################################################*******************************************************************************************************************##*************************************************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################****++++=============================++++********************************************************************************************++++++++++++++++++++++++++++++++++++++=======================
******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++******########################################################**************************************************************+++++++++++++++++++++++++++++++++++%@@@@@@@%%%%@%@@@@@@@@@@@@@@%#*+++++++++++++++++++====--:::.......::::::::::::---------------------------::::::::::::::::::::::::-::----::--:--:-=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%=:::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=======================------:::::......................................................................................................................................................................:######*..............=#########%%%%%#########%%%%%%%%%%%#%###############%%%######################################################%%*=::........:=#%%%%%%%#%%%%%%%%###=:::.::..:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%+++++=+=====================================------------------------------------------------------------::::::::::::::::........                                      .*++++++=-------------------:::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------:::::::::::::::::::::::..  ..::::::::::::::::::::::.                                                 ....:::---::...              .............................               ..........                                           ............................................................................::::::::::.......................................::::::::------====================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::----==++**########******++++==---:::::::::::::::::::::::::::::::::::::::::::...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................::::::............................................................::::::............  .........................................................................................................................................................................................::::--=====================----:::---=========---:::............................................................................::::::::::::::::............................::::::::............................:::::----------:::::::.........................::::::::::::::::::::::..........................................................................::::::::::::::::...........:::::::::::::--==+++===-------==++***#######################################################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###****************########################################################################################################################################################################################################################################*****+++========================++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++=======================
******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++*****#########################################################***************************************************************++++++++++++++++++++++++++++++++++%@@@@@@@%%%%@@@@@@@@@@@@@@@#*+++++++++++++++++++++===---:::.......:::::::-:::----------------------------::::::::::::::::::::::::-:--:::------:--*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@#::::::::::::::::::::::::::::::::::::::::::::::::-----=---:::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------==============------::::::.......................................................................................................................................................................:######*..............-#########%%%%%#########%%%%%%%%%%%#%###############%%%######################################################%%*=::.........=#%%%%%#%#%%%%%%%####-::..:..-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#@@@@@@@@@@@@@@%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*#%%%%#+++++++=====================================------------------------------------------------------------::::::::::::::::.........                                     :*++++++=--------------------::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------:::::::::::::::::::::::..  ..::::::::::::::::::::::.                                                ...:::----:::..               ............................               ..........                                          ..............................................................................:::::::::.......................................::::::::-------===================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::----=++***#######******++++==----:::::::::::::::::::::::::::::::::::::::::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................::::::............................................................::::::............  ..........................................................................................................................................................................................:::--=====================---::::---==========--:::............................................................................::::::--::::::::::..........................::::::::............................:::::----------:::::::.........................::::::::::::::::::::::....................................................................:::::::::::::::::::::::..........:::::::::::::-==++++===------==++***##########################################################################**#*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####****************#########################################################################################################################################################################################################################################*****+++==================+++++++++++**********************************************************************************************++++++++++++++++++++++++++++++++++++++========================
******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++*****#########################################################***************************************************************++++++++++++++++++++++++++++++++++@@@@@@@@%%%%@@@@@@@@@@@@@%*+++++++++++++++++++++++===---::........::::::---:------------------------------::::::::::::::::::::::-:--:----------:=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=:::::::::::::::::::::::::::::::::::::::::::::::---====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------==========------:::::.........................................................................................................................................................................:######*..............:#########%%%%%##########%%%%%%%%%%%%###############%%%######################################################%%*=::.........=#%%#%%%%#%%%%%%%####:::::..=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##@@@@@@@@@@@@@@%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*#%%%%*++++=+======================================-------------------------------------------------------------:::::::::::::::.........                                     :*++++++=--------------------:::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------:::::::::::::::::::::::..  ..:::::::::::::::::::::::                                               ....:::----:::...                ..........................              ...........                                          .................................................................................::::..........................................:::::::-------=============================================--------==============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::---==++***######******++++===---::::::::::::::::::::::::::::::::::::::::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................::::::::...........................................................::::::............ ...........................................................................................................................................................................................:::---====================---:::::---=========--:::............................................................................:::::-----::::::::::.......................:::::::::............................:::::----------:::::::.........................::::::::::::::::::::::...............................................................::..:::::::::::::::::::::::::.........::::::::::::--==+++++==------==++***###############################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####****************##########################################################################################################################################################################################################################################****+++=================++++++++++*********##*************************************************************************************++++++++++++++++++++++++++++++++++++++========================
******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++++++++++++++++++++++++++++++++*****###########################################################*************************************************************++++++++++++++++++++++++++++++++++@@@@@@@@%%%%@@@@@@@@@@@%*+++++++++++++++++++++++++===---:::......::::::----------------------------------------::::::::-:::::-------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@#:::::::::::::::::::::::::::::::::::::::::::::::--=====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------=--------:::::...........................................................................................................................................................................:######*...............*########%%%%###########%%%%%%%%%%#%###############%%#######################################################%%*-:..........=#%%#%####%%%%%%%####-:::.:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*%@@@@@@@@@@@@@@@%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*#######*#%%%%*++++++========================================-----------------------------------------------------------::::::::::::::...........                                    :+++++++=--------------------::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------::::::::::::::::::::::::..  ..::::::::::::::::::::::.                                             ....:::-----:::...                 ..........................            ............ ...                                   ..................................................................................................................................:::::::------=========================================---------------============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==++**######******+++++==---::::::::::::::::::::::::::::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................::::::::...........................................................::::::........................................................................................................................................................................................................:::---===================---::::::---=========--:::...........................................................................::::::-----:::::::::::......................::::::::::...........................:::::----------::::::.........................:::::::::::::::::::::............................................................:...::::::::::::::::::::::::::::::.........::::::::::::--=++++++===----==++***################################################################################*************####**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************###******************#########################################################################################################################################################################################################################################*****+++===============+++++***************#*************************************************************************************++++++++++++++++++++++++++++++++++++++=========================
******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++++*****############################################################************************************************************++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@%#*++++++++++++++++++++++++++===---:::......::::::--------------------------------------------------:::--------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@+::::::::::::::::::::::::::::::::::::::::::::::--=====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------:::::............................................................................................................................................................................:######*...............=########%%%%###########%%%%%%%%%%#%###############%%#######################################################%%*-:..........=#%%#%#%%%%%%%%%%%#%%#+--+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**%@@@@@@@@@@@@@@@%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*#######*#%%%%++++++=========================================------------------------------------------------------------:::::::::::::...........                                    :*++++++=---------------------::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------:::::::::::::::::::::::..  ...::::::::::::::::::::::.                                           ....:::------:::...                 ..........................           .................                                   ..................................................................................................................................:::::::------========================================-----------------============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==++***#####******+++++==---::::::::::::::::::::::::::::::::::::::::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................::::::::...........................................................::::::........................................................................................................................................................................................................:::---===================---::::::---=========---:::.........................................................................::::::--------:::::::::......................::::::::::...........................:::::----------::::::.........................:::::::::::::::::::::..........................................................::::::::::::::::::::::::::::::::::::.........:::::::::::--==+++++++==---===++***####################################################################################**#########****************************************************************************+++*****************************************************************************************************************************************************************************************************************************************************************************###******************##########################################################################################################################################################################################################################################*****+++=============++++*****************************************************************************************************++++++++++++++++++++=+======+===+++++++==========================
******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++++++++++++++++++++++++++++++*****#############################################################***********************************************************++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@%#*+++++++++++++++++++++++++++====--:::.......::::::------------------------------------------------------------------------=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%-:::::::::::::::::::::::::::::::::::::::::::::--=====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------:::::..............................................................................................................................................................................:######*...............:########%%%%###########%%%%%%%%%%%%###############%%#######################################################%%*-:..........=#%%%##%%%%%%%%%%%%%%%%####@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*++*@@@@@@@@@@@@@@@@%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*#######*#%%%#++++++=========================================------------------------------------------------------------:::::::::::::..........                                     :*++++++=---------------------:::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------::::::::::::::::::::::::..  ..:::::::::::::::::::::::.                                          ...:::-------:::...                 ..........................           ..................                                  ..................................................................................................................................:::::::------=======================================-------------------===========================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::---==++***####******+++++==---::::::::::::::::::::::::::::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::::::::...........................................................::::::........................................................................................................................................................................................................::::--==================---::::::::--=========---:::.........................................................................::::::---------:::::::::.....................::::::::::...........................:::::----------:::::..........................::::::::::::::::::::........................................................::::::::::::::::::::::::::::::::::::::::........:::::::::::--==++**+++=======++***##############################################################################################********************************************************************++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************###******************###########################################################################################################################################################################################################################################*****+++===========++++*************##****########**************************************************************************++++++++++++++++==================================================
******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++*****###############################################################*********************************************************+++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@%#*+++++++++++++++++++++++++++++====--:::.......::::::-------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@*:::::::::::::::::::::::::::::::::::::::::::::--=====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................................................................................................:######*................########%%%%############%%%%%%%%%%%%##############%%#######################################################%%*-:..........-*%%%#####%%%%%%%%%%%%#####%@@@@@@@@@@@@@@@@@@@@@@@@@@@*++++*@@@@@@@@@@@@@@@@%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*#######*#%%%#++++++=========================================------------------------------------------------------------:::::::::::::..........                                     -*+++++++----------------------:::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------::::::::::::::::::::....:..  ..:::::::::::::::::::::::                                         ...:::--------:::...                 . ........................          .....................                                ..................................................................................................................................:::::::------======================================---------------------===========================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==+****###******+++++==---::::::::::::::::::::::::::::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::::::::...........................................................::::::.........................................................................................................................................................................................................:::---=================---::::::::---=========--:::.........................................................................:::::-----------::::::::.....................::::::::::...........................:::::----------:::::..........................::::::::::::::::::::..................................................::::::::::::::::::::::::::::::::::::::::::::::........:::::::::::--=+++**++++======++****########################################################################################**************************************************************++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************###******************###########################################################################################################################################################################################################################################*****++++=========++++**************##**############**********************************************************************+++++++++++++=======================================================
*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++*****################################################################********************************************************+++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@%*+++++++++++++++++++++++++++++++====--:::.......::::::-------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@+::::::::::::::::::::::::::::::::::::::::::::---==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................................................................:#######................*#######%%%%############%%%%%%%%%%%%##############%%#######################################################%%*-:..........:+%%%%%%%%%%%%%%%%%%#######@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++++#@@@@@@@@@@@@@@@@%%%######%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*#######*#%%%*++++++=========================================------------------------------------------------------------:::::::::::::...........                                    -*+++++++=---------------------:::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------::::::::::::::::::::....:... ..::::::::::::::::::::::::                                        ...::---------::::..                   .    ..................           .........................                            ..................................................................................................................................:::::::------======================================----------------------==========================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==++****#*******++++++==---:::::::::::::::::::::::::::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::::::::...........................................................::::::.........................................................................................................................................................................................................:::---================---::::.::::---=========--:::.........................................................................:::::------------:::::::.....................::::::::::...........................:::::----------:::::..........................:::::::::::::::::.................................................:::::::::::::::::::::::::::::::::::::::::::::::::::........::::::::::--=++****+++=====+++*****####################################################################################***********************************************************++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************###******************###########################################################################################################################################################################################################################################*******+++++===++++++************#******###############*****************************************************************++++++++++++==========================================================
*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++++++++++++++++++++++++++*****#################################################################*******************************************************++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@%*++++++++++++++++++++++++++++++++=====--:::.......::::::-------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%=::::::::::::::::::::::::::::::::::::::::::::------::::..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::::::::::::::...................................................................................................................................................................................#######................*#######%%%%############%%%%%%%%%%%%##############%%#######################################################%%*::.........::+%%%%%%#%%%%%%%%%#########@@@@@@@@@@@@@@@@@@@@@@@@@@%++++++#@@@@@@@@@@@@@@@@%%%#####%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*######**#%%%*++++++==========================================-----------------------------------------------------------:::::::::::::...........                                    -*+++++++=----------------------:::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------::::::::::::::::::::........ ...:::::::::::::::::::::::.                                       ..::----------::::...                          ..............            ............................                         ..................................................................................................................................:::::::------=====================================-----------------------===========================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==++***********++++++==---:::::::::::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::.........................................................................................................................................................................................................:::---================---::::..:::---=========---:::.......................................................................:::::--------------:::::::...................::::::::::::..........................:::::----------:::::..........................::::::::::::::::................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::.........:::::::::-==++*****++++==++++********##########*###################################################################**********************************************************++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************###*******************###########################################################################################################################################################################################################################################*******++++++++++++*********############################**************************************************************++++++++++=============================================================
*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++++++++++++*****##################################################################******************************************************+++++++++++++++++++++++++++++++++++++*@@@@@@@@%#*+++++++++++++++++++++++++++++++++=====--:::.......::::::--------------------------------------------------------------------------*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#--:::::::::::::::::::::::::::::::::::::::::::---:::::...:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................:::::::.....................................................................................................................................................................................#######............... *#######%%%%############%%%%%%%%%%%%%#############%%%######################################################%%*::.........::=%%%%###%%%%%%###########%@@@@@@@@@@@@@@@@@@@@@%@@@%+++++++%@@@@@@@@@@@@@@@@%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**%%%%*++++++==========================================-----------------------------------------------------------:::::::::::::...........                                    =**++++++=----------------------::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------::::::::::::::::::::......:.....::::::::::::::::::::::::                                      ..::-----------::::...                          .............            .....................................                 ..................................................................................................................................::::::::-----=====================================------------------------===========================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::----=+++**********++++++==---:::::::::::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::..........................................................................................................................................................................................................:::--===============---::::...::::--=========---:::.......................................................................:::::---------------::::::...................::::::::::::...........................::::----------:::::..........................:::::::::::::::................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::::::::::-==++*****++++++++++**************##*#*##############################################################********************************************************++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************###*******************############################################################################################################################################################################################################################################********+++++++********#********########################***********************************************************++++++++++===============================================================
*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++****####################################################################*****************************************************++++++++++++++++++++++++++++++++++++++#@@@@@%#*+++++++++++++++++++++++++++++++++++=====--::........::::::---------------------------------------------------------------------------+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*-:::::::::::::::::::::::::::::::::::::::::::::::::.....::::::::::::::::...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................................................#######..............  *#######%%%%############%%%%%%%%%%%%%#############%%%######################################################%%*::.........::=%%%%%%%%%%########***#%%@@@@@@@@@@@@@@@@@@@@@@@@@%*++++++*%@@@@@@@@@@@@@@@@%%%##%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**%%%%++++++===========================================-=----------------------------------------------------------::::::::::::...........                                    =**++++++=-----------------------:::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------::::::::::::::::::::.....:.....:::::::::::::::::::::::::                                     ..::--==-------::::...                                                   .......................................               ................ .................................................................................................................::::::::-----=====================================------------------------===========================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::---==+++*********++++++==---:::::::::::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::..........................................................................................................................................................................................................:::--===============---::::....:::---========---:::.......................................................................::::----------------::::::...................:::::-::::::...........................::::---------:::::...........................:::::::::::::::...............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++******+++++++++*****************#*##############################################################**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************###*******************#############################################################################################################################################################################################################################################**********************#########***#####################**********************************************************+++++++++=================================================================
*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++****########################################################################*************************************************++++++++++++++++++++++++++++++++++++++*%@@%#*++++++++++++++++++++++++++++++++++++======--::........::::::------------------------------------------------------------------------:--:-+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%=-:::::::::::::::::::::::::::::::::::::::::::::::......:::::::::::::::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................................................................................................................................#######.............   +#######%%%%#############%%%%%%%%%%%%#############%%%#####################################################%%%*::.........:.-%%%%%%%#########**+++#@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++++++*%@@@@@@@@@@@@@@@@%%%#%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%##############*#%%%#++++++===========================================------------------------------------------------------------::::::::::::...........                                   .=**++++++=-----------------------::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------::::::::::::::::::::..........:::::::::::::::::::::::::.                                    ..:---==------:::::...                                                   ...........................................                 .........  .................................................................................................................::::::::-----=====================================------------------------===========================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::----==+++*********+++++===---::::::::::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::..........................................................................................................................................................................................................:::---==============--::::.....:::---========---:::.......................................................................::::-----------------::::::..................:::::-::::::...........................:::::--------:::::.............................::::::::::........::........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=+++******+++++++++********************###########################################################**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************####******************############################################################################################################################################################################################################################################************************################################*********************************************************+++++++====================================================================
*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++++++++*****########################################################################*************************************************+++++++++++++++++++++++++++++++++++++++*%#*++++++++++++++++++++++++++++++++++++++=====---::.......:::::::----------------------------------------------------------------------------:-+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*--:::::::::::::::::::::::::::::::::::::::::::::.......::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................................................................................................................................#######.............   +#######%%%%#############%%%%%%%%%%%%#############%%%######################################################%%*::............#%%%%#########**+++++*@@@@@@@@@@@@@@@@@@@@@@@@@@#++++++++*@@@@@@@@@@@@@@@@@%%%%%#%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%##############*#%%%#++++++============================================-----------------------------------------------------------::::::::::::...........                                   .=**++++++=------------------------::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------:::::::::::::::::::::........::::::::::::::::::::::::::.                                   ..:--===------:::::...                                                   ............................................               .............................................................................................................................::::::::-----=====================================------------------------===========================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::----==+++*******++++++===---::::::::::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::..........................................................................................................................................................................................................:::---=============---::::.....:::---=========--:::.......................................................................::::-----------------::::::..................:::::--:::::...........................:::::--------:::::.............................::::::::::..................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++******++++++++++++*****************#########################################################*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************####******************################################################################################################################################################################################################################################################******************##################################*******************************************************++++++++=====================================================================
*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++++++*****##########################################################################***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++======---::.......:::::::-------------------------------------------------------------------------:---:-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=-::::::::::::::::::::::::::::::::::::::::::::.......:::::::::::::::........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................................................................................................................................#######.............   *#######%%%%#############%%%%%%%%%%%%#############%%%######################################################%%*:...    .... .#%%%##********+++++++*@@@@@@@@@@@@@@@@@@@@@@@@@%++++++++*#@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*#######*#%%%*+++++=============================================-----------------------------------------------------------::::::::::::...........                                   .+**++++++=-------------------------::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------::::::::::::::::::::::::....::::::::::::::::::::::::::::                                  ..::--===-----::::::...                                                   ...............................................          ...............................................................................................................................::::::::------====================================-------------------------==========================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::----==+++*****++++++++==---::::::::::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::..........................................................................................................................................................................................................:::---=============---:::.......:::--=========--:::......................................................................:::::-----------------::::::..................::::---:::::...........................:::::--------:::::.............................::::::::::........................::........................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++**++++++++++++++++++++************######################################################***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************###******************############################################################################################################################################*######################################################################################################************#####################################******************************************************+++++++=======================================================================
*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++*****##########################################################################***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%#+++++++++=======---::.......:::::::--------------------------------------------------------------------------:---:=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-:::::::::::::::::::::::::::::::::::::::::::.......:::::::::::::::........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................................................................................................................#######..............  *#######%%%%#############%%%%%%%%%%%%#############%%%#####################################################%%%+:...         -%%##*******++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@%*++++++++*#@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*#######*#%%%*+++++==============================================----------------------------------------------------------::::::::::::...........                                   .+**++++++=--------------------------::::::::::::::::::::::::::::::::::::::::::::::----------::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::                                 ..::--==------:::::::..                                                   .........................................................................................................................................................................................:::::::------====================================-------------------------=========================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::----==+++++++++++++++==---::::::::::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::..........................................................................................................................................................................................................:::---=============--::::.......:::---========--:::......................................................................:::::-----------------::::::.................:::::----::::............................:::::------:::::..............................::::::::::........................::........................::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------===+++++++++++++++++++++++++++++************######****########################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************#******************################################################################################################################################**###***#############################################################################################################**************################**#############********************************************************++++++=========================================================================
****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++++*****##########################################################################***********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%*++++++=========--:::.......:::::::--------------------------------------------------------------------------:-::-:+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@+=-:::::::::::::::::::::::::::::::::::::::::.......::::::::::::::::.........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................................................#######..............  *#######%%%%##############%%%%%%%%%%%##############%%#####################################################%%%+:..        :+###*******+++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@#+++++++++*#@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*#######*#%%%*+++++==============================================----------------------------------------------------------::::::::::::...........                                   .+**++++++=--------------------------:::::::::::::::::::::::::::::::::::::::::::::::------:::::::--------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::                                ..:---==------:::::::...                                                 ............................................................... .........:................................................................................................................:::::::------====================================---------------------------=========================================================================================================+=++==========------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::-----===+++++++++++++===--::::::::::::::::::::::::::::::::::::::........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................:::::::::..........................................................::::::..........................................................................................................................................................................................................:::---============---:::........:::---========---:::.....................................................................:::::------------------:::::.................:::::----:::::............................:::::-----:::::..............................::::::::::................::::::::::::......................::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------===++++++++++++++++++++++++++++++++*************************##################*####********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################******#*****###################################################################################################################******#############*************###*********************************************************++++++==========================================================================
****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++*****###########################################################################**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%*+++++==========--:::.......::::::--------------------------------------------------------------------------:--:----*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%==-::::::::::::::::::::::::::::::::::::::::.......::::::::::::::::.........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................................................#######..............  +#######%%%%##############%%%%%%%%%%%##############%%#####################################################%%%+:..      :=###*******+++++++++++*#**@@@@@@@@@@@@@@@@@@@@@@@#++++++++++*%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*######**%%%#*++++===============================================----------------------------------------------------------::::::::::::...........                                   .+***+++++=---------------------------:::::::::::::::::::::::::::::::::::::::::::::::------::::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                              ...:---==------:::::::...                                                 .........................................................................:................................................................................................................:::::::------===================================----------------------------========================================================================================================+++++=========-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::-----===++++++++++++===---::::::::::::::::::::::::::::::::::::::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::..........................................................................................................................................................................................................:::---============---:::.........:::--========---:::.....................................................................:::::------------------:::::.................:::::----:::::............................:::::::::::::::..............................:::::::::::..............:::::::::::::::....................:::::::::::::::::::::::::::::::::::::::::::::::::::::------==============++++++++++++++++++++++++++++++++++*******************************####****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************#***************#############################################################################################################################****************###############################################################################################################*##**#############*******************************************************#####*************++++++============================================================================
****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++*****############################################################################*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%*++++===========--:::.......::::::---------------------------------------------------------------------------:--:-:--*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*===-::::::::::::::::::::::::::::::::::::::......:::::::::::::::::..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................................................#######................+#######%%%%##############%%%%%%%%%%%##############%%#####################################################%%%+:.     .=####******+++++++++++****+*@@@@@@@@@@@@@@@@@@@@%@%*++++++++++*%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*######**%%%#+++++===============================================----------------------------------------------------------::::::::::::...........                                   :+***+++++=---------------------------::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::--------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                             ...:---==------:::::::...                                                 .........................................................................:................................................................................................................:::::::------==================================-----------------------------========================================================================================================+++++========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::------===+++++++++++==---::::::::::::::-:::::::::::::::::::::::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::::-:::::.........................................................::::::..........................................................................................................................................................................................................:::---===========---:::..........:::---=======---:::.....................................................................:::::------------------::::::................:::::----:::::............................::::::::::::::...............................::::::::::............:::::::::::::::::::...................::::::::::::::::::::::::::::::::::::::::::::::::::::-----===============+++++++++++++++++++++++++++++++++++********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************##*************##############################################################################################################################****************#######*#####################################################################################################***################********************************************************######***********++++++=============================================================================
****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++*****#############################################################################********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%#+++============--:::.......::::::-------------------------------------------------------------------------------:----*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@+=+=-:::::::::::::::::::::::::::::::::::::......:::::::::::::::::..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................................................................................#######:...............+#######%%%%##############%%%%%%%%%%%##############%%#####################################################%%%+.     -###*******++++++++++++*#*+++*@@@@@@@@@@@@@@@@@@@@@%*+++++++++++*%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################**%%%#+++++===============================================----------------------------------------------------------::::::::::::............                                  :+***++++++=---------------------------::::::::::::::::::::::::::::::::::::::::::::::::----::::::::-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                            ..::--===-----::::::::...                                                 .........................................................................:................................................................................................................:::::::------=================================-------------------------------====================================================================================================+++++++=========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::------===++++++++++==---::::::::::::------:::::::::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::---::::.........................................................::::::..........................................................................................................................................................................................................:::--============---:::..........:::---=======---:::.....................................................................:::::------------------::::::................::::-----:::::.............................::::::::::::................................::::::::::........::::::::::::::::::::::::..................::::::::::::::::::::::::::::::::::::::::::::::::::::-----===============++++++++++++++++++++++++++++++++++++*************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************##*************##############################################################################################################################********************************#######################################################################################################*########********************************************************######**********++++++==============================================================================
****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++*****##################################################################################****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%#*++=+==========--:::.......:::::------------------------------------------------------------------------------------:-+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%==+=::::::::::::::::::::::::::::::::::::.......:::::::::::::::::..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................:#######:...............+######%%%%################%%%%%%%%%##############%%%%###################################################%%%%+.   .*%##******+++++++++++++**+++++#@@@@@@@@@@@@@@@@@@@@@#++++++++++++#@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################**%%%*+++++================================================---------------------------------------------------------::::::::::::............                                  :+***++++++=----------------------------::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                           ..::--===-----::::::::...                                                 .........................................................................:................................................................................................................:::::::------===============================---------------------------------===================================================================================================++++++++========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::------===+++++++++==---:::::::::::--------::::::::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::----:::.........................................................::::::.........................................................................................................................................................................................................::::---===========--::::..........::::--========--:::.....................................................................:::::-------------------:::::................::::-----:::::..............................::::::::::..............................:::::::::::::::.....:::::::::::::::::::::::::...................:::::::::::::::::::::::::::::::::::::......::.:::::::----==============++++++++++++++++++++++++++++++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################**************************************######################################################################################################************************************************************########********++++++===============================================================================
****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++*****####################################################################################**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@@@%#*+=+==========--:::.......:::::----------------------------------------------------------------------------------:----=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*==+-:::::::::::::::::::::::::::::::::::......:::::::::::::::::...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................:#######:...............=*#####%%%%################%%%%%%%%%###############%%%###################################################%%%@*.  :###*******+++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@%+++++++++++++#@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################*#%%%*+++++================================================---------------------------------------------------------::::::::::::............                                  :+***++++++=----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::---::::::::-------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                           ..:---===-----::::::::...                                                 .........................................................................:................................................................................................................::::::::-----=============================-----------------------------------=================================================================================================+++++++++=========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::-----==+++++++++==---:::::::::::--------:::::::::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::----:::.........................................................::::::.........................................................................................................................................................................................................::::--===========---:::............:::--========---:::....................................................................:::::------------------::::::................::::------::::...............................:::::::::.........................::::::::::::::::::::::::::::::::::::::::::::::::::...................:::::::::::::::::::::::::::::::::::...........::::::::-------===========++++++++++++++++++++++++++++++++++++***********************++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################**************************************###################################################################################################***************************************************************########*******++++++================================================================================
****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++****########################################################################################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@@@@%#*+=+==========--:::.......:::::-----------------------------------------------------------------------------------:---:-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+=+=:::::::::::::::::::::::::::::::::::......:::::::::::::::::...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................:#######:..........:....-*#####%%%%################%%%%%%%%%%##############%%%##################################################%%%%%*:.=##******++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@%*+++++++++++++#@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################*#%%%*+++++================================================---------------------------------------------------------::::::::::::............                                 .-+****+++++=----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::-------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                         ..:---===-----::::::::...                                                ....:.....................................................................-................................................................................................................::::::::-----=====================-------------------------------------------===============================================================================================++++++++++==========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::---===++++++++===--:::::::::::---------:::::::::::::::::::::...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::----:::.........................................................::::::.........................................................................................................................................................................................................:::---===========---:::............:::---=======---:::....................................................................:::::------------------:::::::...............::::------::::.................................:::::........................:::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::::::::::::::::::::::::::::...................::::::::----------=======++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################**************************************#################################################################################**########***********************************************************************########******+++++==================================================================================
****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++****########################################################################################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@@@@@%#*+===========--:::.......:::::------------------------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++=::::::::::::::::::::::::::::::::::......:::::::::::::::::...........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................................................................................:#######:..........::...:*#####%%%%################%%%%%%%%%%##############%%%#################################################%%@@%%*+*##******+++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@*++++++++++++++%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################*#######*#%%#*+++++=================================================--------------------------------------------------------::::::::::::............                                 .-+****+++++==---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                         ..:---==------::::::::...                                                ...:::....................................................................-................................................................................................................::::::::-----====================----------------------------------------------===========================================================================================++++++++++++=========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::----==++++++++===---:::::::::----===---::::::::::::::::::::::..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::----::::........................................................::::::.........................................................................................................................................................................................................:::---===========--::::............:::---=======---:::....................................................................:::::-------------------::::::...............::::------::::..............................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::::::::::::::::::........................:::::::::-----------====+++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************####*##############################################################################################################################################**************************************###############################################################################****########***********************************************************************########*****+++++===================================================================================
***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++****###########################################################################################********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@%%#+==========--::::.......:::::-------------------------------------------------------------------------------------------=*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=++-:::::::::::::::::::::::::::::::::.....::::::::::::::::::...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................:#######:..........:::..:######%%%%################%%%%%%%%%%##############%%%###############################################%%%@%@@%**#******+++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@%@#+++++++++++++++%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*#######*%%%#++++++=================================================--------------------------------------------------------::::::::::::............                                 .-+*****++++==----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::--:::::::::------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                        ..:---==------:::::::::..                                                ...:::....................................................................-.................................................................................................................:::::::-----====================----------------------------------------------=========================================================================================+++++++++++++++========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::---==+++++++++==---:::::::::---====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::-----:::........................................................::::::........................................................................................................................................................................................................::::---==========---:::..............::---========--::::...................................................................:::::-------------------::::::..............:::::------::::.............................................................::::::..::::::::::::::::::::::::::::::::::::::::::::::.....................:::::::::::::::::::........:.....................:::::::::::::::-----====+++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################***************************************##############################################################################***********************************************************************************########*****++++====================================================================================
***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++*****###########################################################################################********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%@@@@@@@%#+===+======--:::........:::::-------------------------------------------------------------------------------------:-------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++=::::::::::::::::::::::::::::::::::....:::::::::::::::::...........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................:#######:..........:::..-######%%%%#################%%%%%%%%%##############%%%##############################################%%@@%%@@%##******++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@%++++++++++++++++%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*#######*%%%#++++++=================================================--------------------------------------------------------::::::::::::............                                 .-+*****++++==----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::--:::::::::-----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                      ..::--===------:::::::::..                                                ...:::....................................................................-.................................................................................................................:::::::-----====================-----------------------------------------------======================================================================================+++++++++++++++++========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::---==+++++++++==---:::::::::--======---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::------:::........................................................::::::........................................................................................................................................................................................................::::---==========--::::..............:::--========---:::...................................................................:::::-------------------::::::..............:::::------:::::..........................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................:::::::::::::......................................:::::::::::::::---===++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################***************************************############################################################################*************************************************************************************#######*****++++=====================================================================================
***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++*****############################################################################################*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@%+==========--:::........:::::-------------------------------------------------------------------------------------:--:-----=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@#+++-::::::::::::::::::::::::::::::::::.:::::::::::::::::::...........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................:#######:..........:::.:+######%%%%#################%%%%%%%%%##############%%%#############################################%%@@%%@@%##*****++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@%*+++++++++++++++*%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*#######*%%%*+++++==================================================--------------------------------------------------------::::::::::::............                                 .-+*****++++====---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::-::::::::::----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                    ..:---===------:::::::::...                                               ..::::....................................................................-.................................................................................................................:::::::-----====================------------------------------------------------====================================================================================++++++++++++++++++========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::--===++++++++==---::::::::---==++===--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::------:::........................................................::::::.......................................................................................................................................................................................................::::----=========---:::...............:::---=======---:::...................................................................:::::------------------:::::::..............:::::------:::::..........................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................::::..............................................::::::::::::::::---==+++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################***************************************########################################################################*****************************************************************************************#######****++++======================================================================================
***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++****#############################################################################################*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@%++=========--:::.......::::::---------------------------------------------------------------------------------------------===*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-------=+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=+=::::::::::::::::::..::::::::::::::::::::::::::::::::::...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................................................................................:#######:..........:::::+######%%%%#################%%%%%%%%%##############%%%############################################%%@@%%@%%#*****++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@#++++++++++++++++*%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*#######*%%%*+++++==================================================--------------------------------------------------------::::::::::::............                                 :-+******+++====---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::--:::::::::----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                   ..:---===------:::::::::...                                               ..::::....................................................................-.................................................................................................................:::::::-----====================------------------------------------------------===================================================================================++++++++++++++++++=========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::--===++++++++===--::::::::---=++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................:::-----:::........................................................::::::.......................................................................................................................................................................................................::::----=========---:::................::---========--:::...................................................................:::::------------------:::::::..............:::::------:::::..........................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................:::..................................::::::::::::::::--===++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################***************************************#####################################################################********************************************************************************************#######****+++=======================================================================================
***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++****##############################################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@%*=+========--:::........::::::--------------------------------------------------------------------------------------------====+%@@@@@@@@@@@@#**#%@@@@@@@@@@%#+-----------:-+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%+=+-:::::::::::::::.....:::::::::::::::::::::::::::::::::...........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................:.........................:#######:..........:::::*######%%%%#################%%%%%%%%%%##############%%###########################################%%%@@%@%%##****++++++++++++++++++++++++++++++++++@@@@@@@@@@@@@@@%+++++++++++++++++*@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################*#######*#%%%*+++++==================================================--------------------------------------------------------::::::::::::............                                 :-+#*#***+++======---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::-::::::::::--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                  ..:---====-----:::::::::...                                              ...::::....................................................................-.................................................................................................................:::::::-----====================--------------------------------------------------================================================================================++++++++++++++++++++========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==+++++++++==---:::::::--==+++++=---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................:::-----:::........................................................::::::.......................................................................................................................................................................................................::::----=========---:::................:::--========---:::..................................................................:::::------------------:::::::..............:::::-------::::.......::...............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................::::::::::...:::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************###############################################################################################################################################################*****************########*************################################################################**************************************************************************************************#######****+++=======================================================================================
***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++****##############################################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@%*+=+=+=====--:::.......:::::::-------------------------------------------------------------------------------------------=======*%@@@@@@@@%+-----+#%@@#=----------------:---=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@%%%##**+===------=+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++=-::::::::::::::......::::::::::::::::::::::::::::::::...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................:::........................:#######:..........::::-#######%%%%##################%%%%%%%%%##############%%##########################################%%%@@%%%##*****+++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@*+++++++++++++++++#@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################*#######*#%%%*+++++==================================================--------------------------------------------------------::::::::::::.............                                :-+#*#***+++======---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::-:::::::::--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                 ..:--=====-----:::::::::...                                              ...::::.............. .  ..................................................-.................................................................................................................:::::::-----====================--------------------------------------------------================================================================================++++++++++++++++++++========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==+++++++++==---:::::::--==+++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................:::-----:::........................................................::::::.......................................................................................................................................................................................................:::-----========---:::.................:::---=======---:::..................................................................:::::------------------::::::...............:::::-------::::.......::::...........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................:::::::::::...:::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************************************###################################################################################################################################################################*****************########**************###############################################################**************************************************************************************************#######***++++=======================================================================================
***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++*****##############################################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@%#+++=++=====-:::.......:::::::-------------------------------------------------------------------------------------------========+*%@@@@%+=-------=##=--------------------------------------===----------------------::---:::........:::::--:----=#%@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=+=::::::::::::::......::::::::::::::::::::::::::::::::..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................::::::......................:#######-..........::::=#######%%%%##################%%%%%%%%%##############%%##########################################%%@%%@%##*****++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@#++++++++++++++++++#@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*#######*#%%%*++++++=================================================--------------------------------------------------------::::::::::::.............                                :-+###***+++======---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::-::::::::::-------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::               ...:--=====-----:::::::::...                                              ...::::..............    ..................................................-:................................................................................................................:::::::-----====================---------------------------------------------------============================================================================++++++++++++++++++++++=========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==+++++++++==---::::::---==++*++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::------:::.......................................................::::::......................................................................................................................................................................................................::::----=========---:::.................:::---=======---:::..................................................................:::::-----------------::::::................:::::-------::::......:::::..........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................::::::::::::..::::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************######################################################################################################################################################################****************########**************###########################################**********##########*************************************************************************************************########***+++========================================================================================
***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++****################################################################################################****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@%#*+++++++===--:::......:::::::-------------------------------------------------------------------------------------------=================--------------------------------:----------------------------------------:::::..............:::::--------=#@@@@%+-----=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++-:::::::::::::......::::::::::::::::::::::::::::::::..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................:::::...........................................................................................................::::::......................:#######-..........::::+#######%%%%##################%%%%%%%%%##############%%#########################################%%@%%@%##*****+++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@#+++++++++++++++++++%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################*#######*#%%%*++++++==================================================-------------------------------------------------------::::::::::::.............                                :-+#####*++++======---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::-::::::::::-----------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::              ..::--=====-----:::::::::...                                              ...:::::.............        ..............................................-:.................................................................................................................::::::-----====================-----------------------------------------------------=======================================================================+++++++++++++++++++++++===========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==+++++++++==---::::::---=++**+++=---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::------:::.......................................................::::::......................................................................................................................................................................................................::::---==========--::::..................:::--========--::::.................................................................:::::-----------------::::::................:::::-------::::.....:::::::.......................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................:.............:::::::::::::::::::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************########################################################################################################################################################################****************########***************############################################*********##########************************************************************************************************########***+++========================================================================================
**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++*****################################################################################################****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@%##*+++++++==--:::......:::::::-------------------------------------------------------------------------------------------==================------:----------------------:-----:------------------------------------::::::............:::::-----------=*%#=-----::=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++=-::::::::::::.......:::::::::::::::::::::::::::::::..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................::::::.........................................................................................................:::::::......................:*######=..........::::*#######%%%%###################%%%%%%%%%#############%%########################################%%@%%@%#******++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@%+++++++++++++++++++*@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*#######*#%%#*++++++==================================================-------------------------------------------------------::::::::::::.............                               .:-+#####**+++======---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.            ..::--=====-----:::::::::...                                              ...:::::.............         .............................................-:.................................................................................................................::::::-----====================-----------------------------------------------------======================================================================+++++++++++++++++++++++============---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==+++++++++==---::::::--==++***++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::--==--:::.......................................................::::::......................................................................................................................................................................................................:::----=========---:::...................:::--========---:::.................................................................:::::-----------------:::::.................::::--------::::.....:::::::....................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................:::::::::::::::::::::::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************############################################################################################################################################################################****************#########*************###############################################*******##########************************************************************************************************########***+++========================================================================================
**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++*****#################################################################################################***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@%###+++++++===-:::......:::::::-------------------------------------------------------------------------------------------================-------------------------------------------------------------------------::::::..............:::::-----------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=+-::::::::::::.......:::::::::::::::::::::::::::::::..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................:::::::.........................................................................................................::::::::.....................:*######=..........:::-########%%%####################%%%%%%%%%#############%%#######################################%%%@%@%%#*****+++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@%*+++++++++++++++++++*@@@@@@@@@@@%#%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*#######*%%%#+++++++==================================================-------------------------------------------------------::::::::::::.............                               .:-+#####**+++=======---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.           ..:--======-----::::::::::..                                              ..::::::.............         .............................................-:.................................................................................................................::::::-----====================-----------------------------------------------------==================================================================++++++++++++++++++++++++++++============--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==+++++++++===---:::::--==+*****+==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::-===--:::.......................................................::::::.....................................................................................................................................................................................................::::---==========---:::...................:::--========---:::..................................................................::::-----------------:::::.................::::--------:::::...::::::::..............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................:::::::::::::::::--:::::::---===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************###############################################################################################################################################################################**************#############**********###################################################***############***********************************************************************************************#########**+++========================================================================================
**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************##################################################################################################**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@%%#*+++++++==-:::......:::::::------------------------------------------------------------------------------------------=================--------------------------------------------------------------------------:::::..............:::::----------------:------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@#++=-::::::::::.......::::::::::::::::::::::::::::::::.........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................:::::::.........................................................................................................::::::::.....................:*######+..........:::=#######%%%%####################%%%%%%%%%#############%%######################################%%%@%%%%#*****++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@%*++++++++++++++++++++#@@@@@@@@@@%*+#@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################*%%%#+++++++==================================================------------------------------------------------------:::::::::::::.............                               .:-+######**++=======----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.          ..:--======-----::::::::::...                                             ..::::::.............          ............................................-:.................................................................................................................::::::-----====================-----------------------------------------------------===============================================================+++++++++++++++++++++++++++++++============--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==++++++++++==---:::::--==+*****++=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::-====--::.......................................................::::::.....................................................................................................................................................................................................:::----=========---::::...................::::--=======---:::..................................................................::::-----------------:::::.................::::--------:::::...:::::::::........................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................:........................:::::::::::::::::::::------:::---====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************########################################################################################################################################################################################****#################****############################################################################################################*********************************************************##########**+++========================================================================================
**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************##################################################################################################**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@%##*+++++++==-:::......:::::::------------------------------------------------------------------------------------------=================-------------------------------------------------------------------------:::::...............::::-------------------------=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++=::::::::::.......:::::::::::::::::::::::::::::::..........:::::::::::::::::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................:::::::.........................................................................................................::::::::.....................:*######+..........:::+#######%%%%####################%%%%%%%%%#############%%######################################%%@@%%%#*****+++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@#+++++++++++++++++++++#@@@@@@@@@%*++#@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*########*%%%#+++++++===================================================-----------------------------------------------------:::::::::::::.............                               .:-+######**++=======----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::         ..:--======-----::::::::::...                                             ..:::::::............           ...........................................-:.................................................................................................................::::::-----====================-------------------------------------------------------============================================================+++++++++++++++++++++++++++++++++===========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==++++++++++==---::::---=++******+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::-====--::.......................................................::::::.....................................................................................................................................................................................................:::---==========---:::....................::::--========--::::..........................::::...................................::::-----------------:::::.................::::--------:::::...:::::::::.....................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................:................::::::::::::::::::::::::::::------------====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################***##############################################################################################################**########################*****************************##########**+++========================================================================================
**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************####################################################################################################************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@%%##+++++++=--:::......::::::-------------------------------------------------------------------------------------------=================-------------------------------------------------------------------------:::::...............::::---------------------------*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++-::::::::.:......:::::::::::::::::::::::::::::::..........:::::::::::::::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................:::::::........................................................................................................::::::::::....................:*######*..........:::*#######%%%%#####################%%%%%%%##############%%#####################################%%@%@%%#*****++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@%++++++++++++++++++++++#@@@@@@@@%++++#@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*#########%%%#+++++++===================================================-----------------------------------------------------::::::::::::..............                               .:-+######***+=======-----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.      ...:--======-----::::::::::...                                            ...:::::::............           ...........................................-:.................................................................................................................:::::::----=====================-------------------------------------------------------=========================================================+++++++++++++++++++++++++++++++++=============--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::--==++++++++++==---::::---=++******++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................::::-====--:::......................................................::::::...........................................................................................................................................................................:........................::::---==========--::::....................::::--========---:::.........................:::::..................................:::::-----------------:::::................:::::--------:::::...:::::::::...........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................::::::::::::::::::::::::::-----------=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################**********************#########***++========================================================================================
**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#####################################################################################################************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@%%#++++++==--:::......::::::-------------------------------------------------------------------------------------------================--------------------------------------------------------------------------:::::...............::::--------------------------:-+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++=:::::::::.......:::::::::::::::::::::::::::::::..........:::::::::::::::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................::................::::::::........................................................................................................::::::::::....................:*######*...........:-########%%%%#####################%%%%%%%##############%%####################################%%%%@%%#*****++++++++++++++++++++++++++++++++++++++++++++%%@@@@@%*++++++++++++++++++++++%@@@@@@@#+++++%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*#########%%%#+++++++===================================================-----------------------------------------------------::::::::::::..............                               .:-+######***+========----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.     ..:---======-----::::::::::...                                            ...:::::::............          ............................................-:.................................................................................................................::::::-----=====================-------------------------------------------------------========================================================++++++++++++++++++++++++++++++++++==============-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::--==++++++++++==---::::--==++******++=---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::-====--:::......................................................::::::...........................................................................................................................................................................::.......................:::---==========---::::.....................:::--========---:::.........................::::::.................................:::::-----------------:::::................:::::--------::::::.:::::::::::........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................::::::::::::::::::::::::::-----=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************####***#######################################################################################################################################################################################################################################################################################################################################################################******************############**++========================================================================================
**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************######################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@%%#*+++++==-::::......::::::-------------------------------------------------------------------------------------------================--------------------------------------------------------------------------:::::..............:::::---------------------------:-=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++-::::::.:.......::::::::::::::::::::::::::::::...........:::::::::::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................:::::::..............::::::::........................................................................................................::::::::::....................:*######*...........:=########%%%%#####################%%%%%%%##############%%####################################%%%%@%#*****+++++++++++++++++++++++++++++++++++++++++++++#@@@@@@#+++++++++++++++++++++++%@@@@@@#+++++#%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############*#########%%%*+++++++===================================================-----------------------------------------------------::::::::::::..............                               .--+#######**+========-----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.   ..::--======-----::::::::::...                                            ...:::::::.............         ............................................-:..................................................................................................................:::::-----=====================-------------------------------------------------------=======================================================+++++++++++++++++++++++++++++++++++==============-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::--==++++++++++==---::::--==++*******+==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::-====--:::......................................................::::::..........................................................................................................................................................................::::......................:::---=========---:::::.....................:::---=======---:::........................::::::::................................:::::-----------------::::::...............:::::--------::::::::::::::::::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::::::::::::::::::::::----=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################################################################**************#############**++========================================================================================
**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************######################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@%#*++++==--:::......:::::::-------------------------------------------------------------------------------------------================-------------------------------------------------------------------------:::::...............:::::------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++::::::........:::::::::::::::::--::::::::::::...........:::::::::::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................:::::::::............:::::::::.......................................................................................................:::::::::::....................:*######*...........:+########%%%######################%%%%%%%##############%%###################################%%%%@%##****++++++++++++++++++++++++++++++++++++++++++++++#@@@@@#++++++++++++++++++++++++%@@@@%*++++++#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*#########%%%*+++++++===================================================----------------------------------------------------:::::::::::::..............                               .--+####*##**+=========----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.   .:--=======-----::::::::::...                                            ...:::::::............         .............................................-:..................................................................................................................::::::----=====================--------------------------------------------------------==================================================+++++++++++++++++++++++++++++++++++++++==============-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::--==++++++++++==---::::--==+********+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................:::-=====-:::......................................................::::::..........................................................................................................................................................................:::::....................::::--==========---::::......................:::---========--:::........................::::::::................................:::::------------------::::::..............:::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::::::::::::::............................................::::::::::::::::::::::::::::----=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################################################################################################################################################################***********#############**+++=======================================================================================
**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************######################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@@%#*+++===--:::......::::::--------------------------------------------------------------------------------------------===============--------------------------------------------------------------------------:::::...............:::::---------------------------:---=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++=:::..:.......:::::::::::::::------::::::::::..........:::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................::::::::::...........:::::::::.......................................................................................................:::::::::::....................:*######*...........:*########%%%######################%%%%%%%##############%%###################################%%%%@%#****+++++++++++++++++++++++++++++++++++++++++++++++#%@@@%+++++++++++++++++++++++++%@@@#+++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%*+++++++===================================================---------------------------------------------------::::::::::::::..............                               .-=+####**#***=========----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .:--========-----:::::::::...                                            ...:::::::............        ..............................................-:..................................................................................................................::::::----=====================--------------------------------------------------------================================================+++++++++++++++++++++++++++++++++++++++++==============-------------------------------------::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---=++++++++++==---::::--=++********++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................:::--====-:::......................................................::::::..........................:::............................................................................................................................................::::::....................:::---=========---:::::.......................:::--========--::::.......................::::::::................................:::::------------------:::::::::...........:::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............:::::::::::::...........................................::::::::::::::::::::::::::::----======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################********#**#############***++=======================================================================================
**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************######################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@@%#*+++==--:::.......::::::--------------------------------------------------------------------------------------------===============--------------------------------------------------------------------------:::::...............:::::--------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=+-:::.........::::::::::::::--------::::::::...........:::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................::::::::::::..........:::::::::......................................................................................................::::::::::::....................:+######*...........-#########%%%######################%%%%%%%##############%%##################################%%%%@%#****++++++++++++++++++++++++++++++++++++++++++++++++*%@@%*+++++++++++++++++++++++++*%%*++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*##########%%%*+++++++===================================================---------------------------------------------------::::::::::::::...............                              .-=**###**##**==========---------------------------:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:--========-----:::::::::...                                            ...::::::::...........        ..............................................-:.............................................................:::..................................................::::::----=====================--------------------------------------------------------=============================================++++++++++++++++++++++++++++++++++++++++++++==============-------------------------------------::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==+++++++++==---:::---=++********++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................:::--====--::......................................................::::::.........................::::::..........................................................................................................................................:::::::...................:::---=========---::::........................:::--========---:::......................::::::::::...............................:::::------------------:::::::::::.........:::::---------:::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::.................:::::::::::::..........................................::::::::::::::::::::::::::::----=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################*********##############**++=======================================================================================
**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************######################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@@@#*++===--:::.......::::::--------------------------------------------------------------------------------------------===============--------------------------------------------------------------------------::::................:::::-------------------------:----:--+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#++=:::.........::::::::::::::---------:::::::...........:::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................:::::::::::::........::::::::::......................................................................................................::::::::::::....................:+######*...........=#########%%#######################%%%%%%%##############%%#################################%%%%@%%#***+++++++++++++++++++++++++++++++++++++++++++++++++*#%%*++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*##########%%%*+++++++====================================================--------------------------------------------------::::::::::::::...............                              .-=**###**##**==========----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--========-----:::::::::...                                            ...::::::::....:......   .   ...............................................-:.............................................................:::..................................................:::::----======================--------------------------------------------------------===========================================++++++++++++++++++++++++++++++++++++++++++++++=============--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==+++++++++==----::---=++*********+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................:::--====--:::.....................................................::::::........................::::::::.........................................................................................................................................::::::::..................:::--=========---::::.........................:::---=======---:::......................::::::::::...............................:::::------------------::::::::::::........:::::---------::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::::::..........................................:::::::::::::::::::::::::::----====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################*********##############**++=======================================================================================
**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************######################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@%#++====--:::.......::::::--------------------------------------------------------------------------------------------==============---------------------------------------------------------------------------::::................:::::----------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@*=+-:.:.:......::::::::::::::---==----:::::::...........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................:::::::::::::::......::::::::::......................................................................................................::::::::::::....................:+######*..........:+########%%%#######################%%%%%%%##############%%#################################%%%%@%#***+++++++++++++++++++++++++++++++++++++++++++++++++++*##*++++++++++++++++++++++++++++++++++++++%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*##########%%%*+++++++====================================================--------------------------------------------------::::::::::::::...............                              .-+**###**##**==========----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--========-----:::::::::...                                            ...::::::::..:.::......  .   ...............................................--............................................................:::::.................................................:::::----======================---------------------------------------------------------=========================================++++++++==+++++++++++++++++++++++++++++++++++++=============--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==+++++++++===---::---=++***###***++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................:::--====--:::.....................................................::::::.......................:::---:::.........................................................................................................................................::::::::.................::::--=========---::::.........................:::---=======---:::......................::::::::::..............................::::::-------------------::::::::::::.......:::::---------:::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::..........................:::::::::::::..........................................::::::::::::::::::::::::::----===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************#######################################################################################################################################################################################################################################################################################################################################################################################################*********#############**+++======================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************######################################################################################################************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@%#+++===--:::.......::::::---------------------------------------------------------------------------------------------=============---------------------------------------------------------------------------::::................::::------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%++=-:........::::::::::::::---=====---::::::...........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::::::::::::::...:::::::::::......................................................................................................::::::::::::....................:+######*..........:*########%%%########################%%%%%%##############%%#################################%%%@%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*##########%%%*++++++++==================================================--------------------------------------------------:::::::::::::::...............                              .-+**###**###*===========-----------------------------::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--======-----::::::::::..                                           ...:::::::::.:::::.....       ...............................................--............................................................:::::.................................................:::::----======================---------------------------------------------------------===========================================++++++++++++++++++++++++++++++++++++++++++++==============--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==---::---=++***###***++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................:::--====--:::.....................................................::::::.......................::-----:::........................................................................................................................................::::::::.................:::---=========--::::..........................:::---=======---:::.....................::::::::::::.............................::::::-------------------::::::::::::......:::::-----------::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::...::::::..............................:::::::::::::..............................:......:::::::::::::::::::::::::::::-----===+++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++**********************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################************#############***++======================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#####################################################################################################************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%#++===---::........::::::----------------------------------------------------:::::::----------------------------------============---------------------------------------------------------------------------:::::................::::-------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=+=::.......::::::::::::::---=====---::::::...........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::::::::::::::::::::::::::::......................................................................................................::::::::::::....................:+######*..........-#########%%%########################%%%%%%##############%%################################%%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*##########%%%*++++++++==================================================-------------------------------------------------::::::::::::::::...............                              .-+**###**###*===========-----------------------------:::::::::::::::::::::::::::::::::::::::::::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-======-----::::::::::...                                          ...:::::::::.:::::.....      ................................................--............................................................:::::.................................................:::::----======================--------------------------------------------------------============================================++++++++++++++++++++++++++++++++++++++++++++==============--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==---::---=++***###***++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................:::--====--:::.....................................................::::::.......................::--=--:::........................................................................................................................................:::::::::................:::---========---::::..........................:::---=======---:::.....................::::::::::::.............................:::::::------------------:::::::::::::.....:::::-----------::::::::::::::::::::::::::--------::::::::::::::::::::::::..............................................:::::::::::::.....................................:::::::::::::::::::::::::--------===+++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################**************###########***++======================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#####################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%@@@@@@@@@%#++===---::........::::::---------------------------------------------------:::::::::---------------------------------============---------------------------------------------------------------------------:::::................::::--------------------------------:----=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@*=+:.......:::::::::::::::--=======--::::::..........:::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::::::::::::::::::::::::::::.....................................................................................................:::::::::::::...................::+######*.........:=#########%%%#####################%##%%%%%%##############%%################################%%%%#****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*###########%%%*++++++++==================================================-------------------------------------------------::::::::::::::::...............                              .=***##***###*+==========-----------------------------::::::::::::::::::::::::::::::::::::::::::..  ...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====------:::::::::...                                          ...:::::::::::::::.....      ................................................:-............................................................:::::.................................................:::::---=======================--------------------------------------------------------====================================++++++++++++++++++++++++++++++++++++++++++++++++++===============---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==---::---=++***###****+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................:::--====--:::.....................................................::::::................. ....::--===--::........................................................................................................................................:::::::::................:::---========---:::...........................::::---=====---::::.....................::::::::::::.............................:::::::-------------------:::::::::::::...::::::------------:::::::::::::::::::::::::-------:::::::::::::::::::.....................:::::::::::....................:::::::::::::..............................:::::::::::::::::::::::::-------------====++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++=======================++++++++++++++++++++++++++++++++++++++++++****++++********++**********************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################################################********************###########**++======================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************####################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++#%%%%@%%@@@@@@@#*+===--:::........::::::---------------------------------------------------::::::::::--------------------------------============---------------------------------------------------------------------------:::::................::::--------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%=+=:......:::::::::::::::--===++==--::::::..........:::::::::::::::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::::::::::::::::::::::::::::.....................................................................................................:::::::::::::...................::+######*........::+#########%%######################%##%%%%%%##############%%###############################%%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*##########%%%#+++++++++==================================================------------------------------------------------:::::::::::::::::...............                              .=********###*+===========-----------------------------:::::::::::::::::::::::::::::::::::::::::..   ...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===------:::::::::...                                          ...:::::::::::::::......     ................................................:-............................................................:::::.................................................:::::---=======================-------------------------------------------------------================================++++=+++++++++++++++++++++++++++++++++++++++++++++====================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==---::---=++***####***++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................:::--=====-:::.....................................................::::::......................::--===--::........................................................................................................................................::::::::::...............:::--=========---:::............................:::----====---:::......................:::::-::::::.............................:::::::-------------------::::::::::::::::::::::------------:::::::::::::::::::::::::-------::::::::::::::::.......................:::::::::::::::::::::::::::::::::::::::::::::........................::::::::::::::::::::::::::-------------=======++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++=============================================================+++++++++++++++++++++++++++++++++++++++*+++++************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################################################################***************************###########**+++=====================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************####################################################################################################***********************++++++++++++++++++++++++++++++++++++++++*+********++++++++++++#%%%%@%%@@@@@@@%#*+==--:::........::::::---------------------------------------------------::::::::::::::----------------------------===========----------------------------------------------------------------------------:::::................::::------------------------------------:-:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=+-.:....:::::::::::::::--==+++==---:::::..........::::::::::::::......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::::::::::::::::::::::::::::....................................................................................................::::::::::::::...................::+######+.......:::*#########%%######################%###%%%%###############%%##############################%%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*##########%%%#+++++++++++================================================-----------------------------------------------::::::::::::::::::...............                              :+********####+===========-----------------------------:::::::::::::::::::::::::::::::::::::::::..    ..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-===------:::::::::...                                          ...:::::::::::::::......     ................................................:-............................................................:::::.................................................:::::---=======================-------------------------------------------------------=================================++++++++++++++++++++++++++++++++++++++++++++++======================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==---::---=++***####***++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................:::-=====-:::.....................................................::::::......................::-====--::........................................................................................................................................::::::::::..............::::--========---::::............................::::---------::::......................::::---::::::............................::::::::------------------::::::::::::::::::::::------------::::::::::::::::::::::::::-----::::::::::::............................:::::::::::::::::::::::::::::::::::::::::::::......................:::::::::::::::::::::::::::-------=============++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============++===========================================================+++++++++++++++++**++++++++++++++++****************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################************************************************##########**+++=====================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************###################################################################################################***********************++++++++++++++++++++++++++++++++++++++**************++++++++++#%%%%%%%@@@@@@@%##*+=--:::........::::::---------------------------------------------------:::::::::::::::---------------------------==========-----------------------------------------------------------------------------::::.................::::-------------------------------------:--#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+==:....::::::::::::::::--==++++==--::::...........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::....................................................................................................::::::::::::::...................::+######+.......::-##########%%*#####################%###%%%%##############%%%##############################%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*##########%%%#+++++++++++=================================================---------------------------------------------:::::::::::::::::::...............                              :+********####+============-----------------------------:::::::::::::::::::::::::::::::::::::::...    ...:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=------:::::::::...                                          ...::::::::::::::::.....     ................................................:-............................................................:::::.................................................:::::---=======================-------------------------------------------------------==================================+++++++++++++++++++++++++++++++++++++++++++========================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==---::---==+***####****+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................:::-=====--::.....................................................::::::......................::-====--::........................................................................................................................................::::::::::..............:::---========---:::..............................::::--------::::.....................:::::----:::::...........................::::::::::-----------------:::::::::::::::::::::-------------:::::::::::::::::::::::::::----::::::::................................::::::::::::::::::::::::::::::::::::::::::::::..................:::::::::::::::::::::::::::::----==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============+================================================================+++++++++++++++++*******++++***********************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################################################################################*****************************************************#########***++=====================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************##################################################################################################***********************++++++++++++++++++++++++++++++++++++*****************+++++++++#%%%%%%@@@@@@@@%%##+=--:::........::::::---------------------------------------------------::::::::::::::::---------------------------=========----------------------------------------------------------------------------:::::.................::::-----------------------------------:---:=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=+=:...:::::::::::::::---=+++++==--::::...........::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::::...................................................................................................:::::::::::::::...................::+######+.......::=##########%%*#####################%###%%%%##############%%%#############################%%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%*+++++++++++=================================================--------------------------------------------::::::::::::::::::::...............                              :*********####+============-----------------------------::::::::::::::::::::::::::::::::::::::::..     ..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::...                                          ..:::::::::::::::::.....     ................................................:-.............................................................:::..................................................:::::---=======================-------------------------------------------------------===================================++++++++++++++++++++++++++++++++++++++++==========================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==---:::--==++***###****+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................:::-=====--::.....................................................::::::......................::-====--::.......................................................................................................................................:::::::::::..............:::---========--::::..............................::::::----:::::......................:::::----:::::...........................::::::::::-----------------:::::::::::::::::::::------------:::::::::::::::::::::::::::::--:::::::.................................::::::::::::::::::::::::::::::::::::::::::::::::................:::::::::::::::::::::::::::::---=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+++==========================================================================================++++++++++++++*******************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################*****************************************************************************************##########**++=====================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************##################################################################################################***********************+++++++++++++++++++++++++++++++++++******************+++++++++#%%%%%%@@@@@@@@%%%#*=--:::........::::::---------------------------------------------------::::::::::::::::----------------------------=======-----------------------------------------------------------------------------:::::................:::::-----------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+==-...:::::::::::::::---=+++++==--::::...........::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::::...................................................................................................::::::::::::::::..................::+######+.......::+##########%%*#########################%%%###############%%##############################%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%#######%%%*+++++++++++=================================================--------------------------------------------::::::::::::::::::::...............                              -*********####*===========-------------------------------:::::::::::::::::::::::::::::::::::::::..     ...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::...                                          ..:::::::::::::::::.....     ................................................::.............................................................:::...................................................::::---=======================-------------------------------------------------------============================+======+++++++++++++++++++++++++++++++++++++++==========================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==--::::--==++***####***++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................:::-=====--:::....................................................::::::......................::-====--::.......................................................................................................................................::::::::::::.............:::---=======---:::................................:::::::::::::.......................:::::----:::::...........................::::::::::-----------------::::::::::::::::::::::----------:::::::::::::::::::::::::::::::-:::::::................................::::::::::::::::::::::::::::::::::::::::::::::::::...............:::::::::::::::::::::::::::----===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================================================================+++++++************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################*************************************************************************************************##########**++=====================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#################################################################################################***********************+++++++++++++++++++++++++++++++++*******************++++++++++#%%%%%%@@@@@@@@@%%##+--::........::::::----------------------------------------------------:::::::::::::::::-----------------------------====------------------------------------------------------------------------------:::::................:::::------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#===:.:.::::::::---:::---=++++++=--::::..........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::....................................................................................................::::::::::::::::.................:::+######*......:::*#########%%#*#####################%##%##################%%#############################%%%%%***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%#%#######%%%*+++++++++++=================================================--------------------------------------------::::::::::::::::::::...............                              =*********####*+===========------------------------------:::::::::::::::::::::::::::::::::::::::..      ..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::..                                         ...:::::::::::::::::......    ...............................................................................................................:::...................................................:::::---======================-------------------------------------------------------=============================================================++++++++++=============================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::--==+++++++++==---::::---=++***####***++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--:::...................................................:::::::................. ....::-====--::.......................................................................................................................................::::::::::::............::::--========---:::.................................:::::::::::........................:::::-----::::...........................::::::::::-----------------:::::::::::::::::::::::-------:::::::::::::---:::::::::::::::::::::::::..............................::::::::::::::::::::::::::::::::::::::::::::::::::::..............:::::::::::::::::::::::---------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================================================================+++++++*****************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################*************************************************************************************************##########**+++====================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************################################################################################################***********************+++++++++++++++++++++++++++++++*********************++++++++++#%%%%%%@@@@@@@@@%%%#+--::........::::::----------------------------------------------------:::::::::::::::::---------------------------------------------------------------------------------------------------------------::::.................:::::-------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+==-:::::::::----------==++**++==-::::..........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::....................................................................................................::::::::::::::::.................:::+######*.......::*##########%#*#####################%#####################%%#############################%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%#########%%%*++++++++++++================================================-------------------------------------------:::::::::::::::::::::...............                              +*********####*+===========-------------------------------:::::::::::::::::::::::::::::::::::::::..     ..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----::::::::::..                                         ...:::::::::::::::::......    ...............................................................................................................:::...................................................:::::---======================-------------------------------------------------------====================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::--==+++++++++==---:::::--=++***####***++=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--:::...................................................:::::::......................::-====--::.......................................................................................................................................:::::::::::::...........::::--========--::::..................................:::::::::.........................:::::-----::::...........................::::::::::-----------------:::::::::::::::::::::::::--::::::::::::::::----:::::::..::::::::::::::...........................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............::::::::::::::::::-------------===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================================================================+++++***********************************************************************************************************************************************###########################################################################################################################################################################################################################################################################################################################****************************************************************************************************##########***++====================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************###############################################################################################***********************+++++++++++++++++++++++++++++**********************+++++++++++#%%%%%%@@@@@@@@@@%%#*=-::........::::::----------------------------------------------------:::::::::::::::::---------------------------------------------------------------------------------------------------------------::::.................:::::--------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@#=+=-:::::::-----------==++**++==-::::..........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::...................................................................................................:::::::::::::::::.................:::+######*.......:-###########%*######################%#####################%%############################%%%%%#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*##%########%%%*++++++++++++================================================------------------------------------------:::::::::::::::::::::................                             .**********####*+===========-------------------------------::::::::::::::::::::::::::::::::::::::::...  ..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::..                                         ...:::::::::::::::::......    ...............................................................................................................:::...................................................:::::----=====================-------------------------------------------------------====================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::--==+++++++++==---:::::--=++***####****+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--:::...................................................:::::::......................::-====-::.......................................................................................................................................::::::::::::::...........::::--=======---:::....................................................................:::::------:::::..........................:::::::::------------------:::::::::::::::::::::::::::::::::::::::::::----:::::::...::::::::::::::..................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::::::::::::----------------=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================+++++*****************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################***************##*******************************************************************************************************##########***++====================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************##############################################################################################***********************+++++++++++++++++++++++++++***********************++++++++++++#%%%%%%@@@@@@@@@@%%%*=:::........::::::----------------------------------------------------:::::::::::::::::---------------------------------------------------------------------------------------------------------------::::.................:::::--------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@*=+=:::::::---==------==++***+==--:::..........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::...................................................................................................:::::::::::::::::.................:::+######*......::+##########%%+######################%%####################%%############################%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#%%#######%%%*++++++++++++===============================================----------------------------------------::::::::::::::::::::::::................                             .***********###**+===========------------------------------:::::::::::::::::::::::::::::::..::::::::......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::..                                        ....:::::::::::::::::......   ................................................................................................................:::...................................................:::::-----====---=--==========------------------------------------------------------=====================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::--==+++++++++==---:::::--==+***####****+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--:::...................................................:::::::......................::--==--::.......................................................................................................................................:::::::::::::::..........:::---=======---:::....................................................................:::::------:::::.........................::::::::::------------------::::::::::::::::::::::::::::::::::::::::::------:::::::.::::::::::::::::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........::::::-----------------===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================++++***********************************************************************************************************************************###########################################################################################################################################################################################################################################################################################################**********************************************************************************************************************###########**++====================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#############################################################################################***********************+++++++++++++++++++++++++***********************++++++++++++++#%%%%%@@@@@@@@@@@%%%*=:::........::::::----------------------------------------------------:::::::::::::::::--------------------------------------------------------------------------------------------------------------:::::.................::::---------------------------------------------:+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%+=+-:::::---=====----==++***++=--:::..........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::....................................................................................................:::::::::::::::::.................:::+######*:.....::*##########%%+######################%%####################%%###########################%%%%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%#%#######%%%*++++++++++++===============================================-------------------------=++++=--------:::::::::::::::::::::::::................                             .***********###**+===========-------------------------------::::::::::::::::::::::::::::::...:::::::::...:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..                                        ....:::::::::::::::::......   ................................................................................................................::....................................................:::::-------------------=====-------------------------------------------------------=====================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---=+++++++++==---:::::--==+****###****++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--::....................................................:::::::......................::--==--::.......................................................................................................................................:::::::::::::::.........::::---=======--::::....................................................................:::::------:::::.........................:::::::::-------------------:::::::::::::::::::::::::::::::::...::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::.......:::::----------------=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================================================++++******************************************************************************************************************************#############################################################################################################################################################################################################################################################################################################*********************************************************************************************************************##########**++====================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#############################################################################################***********************++++++++++++++++++++++++***********************+++++++++++++++#%%%%%@@@@@@@@@@@%%#*=:::........::::::----------------------------------------------------:::::::::::::::::--------------------------------------------------------------------------------------------------------------:::::.................::::-----------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#===-::::---======---==++***++=--:::.........::::::::::::::......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::...................................................................................................::::::::::::::::::.................:::+######*:.....::###########%#+%#####################%%####################%%###########################%%%%#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*##%#%#######%%%*++++++++++++===============================================------------------------+**###*=-----:::::::::::::::::::::::::::................                             .***********###***===========--------------------------------:::::::::::::::::::::::::::::.  .::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..                                        ....:::::::::::::::::......   .....................................................  .........................................................::....................................................:::::-------------------------------------------------------------------------------=====================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---=++++++++===--::::::--==++****##****++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--::....................................................:::::::......................::--=---::.......................................................................................................................................:::::::::::::::.........::::--=======---::::....................................................................:::::------:::::.........................::::::::--------------------:::::::::::::::::::::::::::::::......:::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------:::::::::.....::::::---------------=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================================++++**************************************************************************************************************************################################################################################################################################################################################################################################################################################################################******************************************************************************************************************##########**+++===================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************############################################################################################***********************+++++++++++++++++++++++***********************++++++++++++++++#%%%%%@@@@@@@@@@@%%##+:::........::::::----------------------------------------------------:::::::::::::::::--------------------------------------------------------------------------------------------------------------:::::.................::::------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%*=+=::::---==+========+****++=--:::.........::::::::::::::......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::..................................................................................................:::::::::::::::::::.................:::=######*:.....:=###########%**%#####################%%####################%%##########################%%%%##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%#%#######%%%*+++++++++++++==============================================----------------------=*#######+----::::::::::::::::::::::::::::................                             :************##***+==========--------------------------------:::::::::::::::::::::::::::::.  ..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..                                        ....:::::::::::::::::......   .....................................................  .   .....................................................::....................................................:::::-----------------------------------------------------------------------------=======================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---=++++++++==---::::::---=++****##*****+==-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--::..........................:::::::...................:::::::......................::-----:::......................................................................................................................................:::::::::::::::::.........:::--=======--::::.....................................................................:::::------:::::.......................:::::::::---------------------:::::::::::::::::::::::::::.........::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------:::::::::....::::::---------------============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================================+++**********************************************************************************************************************################################################################################################################################################################################################################################################################################################################******************************************************************************************************************##########***++===================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************###########################################################################################***********************+++++++++++++++++++++***********************++++++++++++++++++#%%%%%@@@@@@@@@@@%%%#+:::........::::::----------------------------------------------------:::::::::::::::::--------------------------------------------------------------------------------------------------------------:::::.................::::------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+=+-:::--===++=======+****++==-:::.........::::::::::::::......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::..................................................................................................:::::::::::::::::::.................:::=######*:....::+###########%+*%#####################%%####################%%##########################%%%%#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%#%%######%%%*+++++++++++++==============================================---------------------=*########*=-::::::::::::::::::::::::::::::................                             =************##***+==========--------------------------------:::::::::::::::::::::::::::::..  ..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..                                        ....:::::::::::::::::......   .................................................  ..         ..................................................:.....................................................:::::----------------------------------------------------------------------------=======================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---=++++++++==---:::::::--=++****##*****+==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................::--====--::..........................::::::::..................:::::::......................::-----:::......................................................................................................................................:::::::::::::::::.........:::---=====---::::.....................................................................:::::-------::::......................::::::::::---------------------:::::::::::::::::...................::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::..::::::-----------------==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================================================================================================================+++******************************************************************************************************************################################################################################################################################################################################################################################################################################################################******************************************************************************************************************###########**++===================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************###########################################################################################**********************++++++++++++++++++++************************++++++++++++++++++#%%%%%%@@@@@@@@@%%%%#+:::........::::::----------------------------------------------------::::::::::::::::---------------------------------------------------------------------------------------------------------------::::.................:::::-------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=+=-:---==++++=====++*****+==-::..........::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::..................................................................................................:::::::::::::::::::................::::=#######:....::*##########%%+#%#####################%%####################%%##########################%%%##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*#%%#%##%%####%%%*+++++++++++++==============================================--------------------+*######%%%*+=::::::::::::::::::::::::::::::................                             +************##****===========--------------------------------:::::::::::::::::::::::::..::.  ..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...                                       ....:::::::::::::::::......   ................................................                    ............................................::....................................................:::::---------------------------------------------------------------------------========================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---==+++++++==---:::::::--==+*****#*****+==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--::..........................::::::::::................:::::::......................::-----::.......................................................................................................................................:::::::::::::::::.........:::---====---::::......................................................................::::--------::::....................:::::::::::---------------------::::::::::::::::::................:::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------:::::::..::::::-------------------=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================================+++*****************************************************************************************************##******###################################################################################################################################################################################################################################################################################################################***************************************************************************************************************###########**+++==================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************##########################################################################################*******+++++***********+++++++++++++++++++***********************++++++++++++++++++++#%%%%%%@@@@@@@@@%%%%#+:::.......:::::::----------------------------------------------------::::::::::::::::--------------------------------------------------------------------------------------------------------------:::::.................:::::--------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%++==::--==+++++====++*****+==-::..........::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::..................................................................................................:::::::::::::::::::................::::=#######:....::*##########%#+#%#####################%%####################%%#########################%%%%##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%#%%%####%%%*+++++++++++++===============================================------------------+*#####%%%%%#*=-:::::::::::::::::::::::::::::................                             *************##****+==========--------------------------------::::::::::::::::::::::::....:.. ..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..                                        ....:::::::::::::::::......    ...............................................                     ...........................................::....................................................:::::-------------------------------------------------------------------------==========================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---==+++++++==--::::::::--==++**********+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................:::--====--::..........................:::---::::................:::::::......................::----:::.......................................................................................................................................:::::::::::::::::.........:::----==----:::.......................................................................::::--------:::::................::::::::::::::---------------------::::::::::::::::...........:::..:::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------:::::::::::::::--------------------========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================================================================================================================+++**************************************************************************************************#******####################################################################################################################################################################################################################################################################################################################***************************************************************************************************************###########**+++==================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************##########################################################################################******+++++++**********++++++++++++++++++***********************+++++++++++++++++++++#%%%%%%@@@@@@@@@%%%%#+:::.......::::::-----------------------------------------------------::::::::::::::----------------------------------------------------------------------------------------------------------------:::::.................:::::---------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++-:--==+++++====++*****+==-::.........::::::::::::::::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................:::::::::::::::::::::::::::::::..................................................................................................::::::::::::::::::.................::::=#######:....:-###########%#+#######################%%####################%%#########################%%%##**++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%%%%%####%%%*+++++++++++++===============================================-----------------*##%#%%%%%%%%%*+-:::::::::::::::::::::::::::::................                            .*************##****+==========---------------------------------:::::::::::::::::::::::.  ..:....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..                                        ....:::::::::::::::::......      .............................................                     ...........................................::.....................................................::::------------------------------------------------------------------------===========================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---==+++++++==--::::::::---=++**********+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::--====--::.........................::::-----:::...............:::::::......................::----:::.......................................................................................................................................::::::::::::::::::........::::--------::::.......................................................................::::--------:::::............::::::::::::::::::---------------------:::::::::::::::.......::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------:::::::::::::---------------------=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================================================++++***************************************************************************************************##################################################################################################################################################################################################################################################################################################***################***************************************************************************************************************###########***++==================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##***********##########################################################################################*****+++++++++*********++++++++++++++++***********************+++++++++++++++++++++++#%%%%%%@@@@@@@@@%%%%#+:::.......::::::-----------------------------------------------------::::::::::::::----------------------------------------------------------------------------------------------------------------:::::.................:::::---------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*++=---==+++++====++*****++=-::.........::::::::::::::::...:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::::::::::::::::::::::::::::................................................................................................:::::::::::::::::::.................::::=#######:....:=###########%*+#######################%%####################%%########################%%%%##*++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*###%#%%######%%%*+++++++++++++================================================--------------=*####%%%%%%%%%%#*=-::::::::::::::::::::::::::::................                            .*************##*****==========----------------------------------::::::::::::::::::::::.  ..:....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..                                        ....:::::::::::::::::.....       .............................................                      ..........................................::.....................................................::::------------------------------------------------------------------------===========================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---==++++++===--:::::::::--=++**********+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::--====--::.........................:::-------:::..............:::::::......................:::--::::.......................................................................................................................................::::::::::::::::::........::::-------:::::.......................................................................::::--------::::::........::::::::::::::::::::----------------------::::::::::::::::...::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------:::::::::::::---------------------=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================================================================================++**********************************************************************************************####################################################################################################################################################################################################################################################################################################**#################***************************************************************************************************************###########***++==================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####*********#########################################################################################******+++++++++*********+++++++++++++++*********************++++++++++++++++++++++++++#%%%%%%@@@@@@@@@%%%%#+:::.......::::::-----------------------------------------------------:::::::::::::-----------------------------------------------------------------------------------------------------------------:::::.................::::-----------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++=--=+++*+++===++*****++=-::........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................:::::::::::::::::::::::::::::::::::.............................................................................................:::::::::::::::::::.................::::=#######:...::*###########%++%######################%%###################%%#########################%%%##**++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*###%#%%######%%%*+++++++++++++=================================================------------=*##%%##%%%%%%%%%%#+-::::::::::::::::::::::::::::...............                             :**************#*****+=========----------------------------------::::::::::::::::::::::.   ..:...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..                                        ....:::::::::::::::::.....        ............................................                      ..........................................:......................................................::::-----------------------------------------------------------------------============================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---==++++++==---:::::::::--==+**********+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::--====--::..........................::-------:::...............::::::......................:::--:::.......................................................................................................................................:::::::::::::::::::.........:::::----:::::........................................................................::::--------::::::::::::::::::::::::::::::::::----------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------::::::::::::----------------------======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===++++++++++++======================================================================================================================================================================================+++*****************************************************************************************#######################################################################################################################################################################################################################################################################################################################***************************************************************************************************************############**++==================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****######********########################################################################################*******+++++++++*********++++++++++++++*******************+++++++++++++++++++++++++++++#%%%%%%@@@@@@@@@%%%%#*:::.......::::::-----------------------------------------------------::::::::::::------------------------------------------------------------------------------------------------------------------::::..................::::------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@#+++=-=+++++++===++*****++=-::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................::::::::::::::::::::.................::::=#######:...::*###########%++%######################%%###################%%########################%%%%##**++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*####%#%%######%%%*+++++++++++++=================================================-----------=####%%%%%%%%%%%%%%#*-::::::::::::::::::::::::::::...............                             -**************#*****+==========----------------------------------:::::::::::::::::::::..  ..::..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                                       ....:::::::::::::::::.....         ...........................................                        ........................................:......................................................::::----------------------------------------------------------------------=============================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---==++++++==---:::::::::--==++*********+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::--====--::..........................:::-------:::..............::::::......................::::::::.......................................................................................................................................:::::::::::::::::::.........:::::::::::::.........................................................................::::--------::::::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::---------------------------------------------------------:::::::::::---------------------=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================+++*************************************************************************************#########################################################################################################################################################################################################################################################################################################################*************************************************************************************************************#############**++==================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########*****#########################################################################################*******+++++++++*********++++++++++++++*****************+++++++++++++++++++++++++++++++*#%%%%%@@@@@@@@@%%%%#*:::.......::::::----------------------------------------------------:::::::::::::------------------------------------------------------------------------------------------------------------------::::.................:::::------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++=-=+++++++===++*****++=-::......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................::::::::::::::::::::................:::::=#######:...:-#############=+%######################%%###################%%########################%%%%#**++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%####%%######%%%*+++++++++++++=================================================----------+####%#%%%%%%%%%%%%%%#+::::::::::::::::::::::::::::...............                             =**************#******==========----------------------------------::::::::::::::::::::::.....::..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                                      ...::::::::::::::::::....          ............................................                       ........................................:.......................................................:::---------------------------------------------------------------------==============================================================================================================---------------------------------------------------------:-------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::--==++++++==---::::::::::--=++********++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::--====--::..........................::::------:::..............:::::.......................::::::::.......................................................................................................................................::::::::::::::::::::.........:::::::::::..........................................................................::::--------::::::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------:::::::::::--------------------======++++++++++++++++++++++++++++++========+++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++==============================================================================================================================================================================================+++*******************************************************************************##########################################################################################################################################################################################################################################################################################################################*************************************************************************************************************#############**+++=================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########***##########################################################################################*******++++++++++********+++++++++++++***************++++++++++++++++++++++++++++++++++*#%%%%%@@@@@@@@@%%%%#*::........::::::----------------------------------------------------:::::::::::::------------------------------------------------------------------------------------------------------------------::::.................:::::------------------------------------------------------:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%+++===++*+++===++*****++=-::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................::::::::::::::::::::................:::::=#######:...:=#############=+%######################%%###################%%########################%%%##**++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%####%#######%%%*+++++++++++++================================================----------+###%%%%%%%%%%%%%#%%%%%*-:::::::::::::::::::::::::::...............                             +*********************==========-----------------------------------:::::::::::::::::::::::..::::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                                     ...::::::::::::::::::....           ...........................................                       ........................................:.......................................................::::--------------------------------------------------------------------==============================================================================================================---------------------------------------------------------:-------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::--==++++++==--:::::::::::--==+********++==-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::--====--::...........................:::-------:::.............:::::.......................::::::::.......................................................................................................................................::::::::::::::::::::..........:::::::::...........................................................................::::--------:::::::::::::::::::::::::::::::::::--------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------:::::::::::--------------------=====+++++++++++++++++++++++++================++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================================================================+++*************************************************************************###########################################################################################################################################################################################################################################################################################################################*************************************************************************************************************#############**+++=================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#######################################################################################################*******++++++++++********+++++++++++**************++++++++++++++++++++++++++++++++++++++#%%%%%@@@@@@@@@%%%%#*::........::::::-----------------------------------------------------:::::::::::------------------------------------------------------------------------------------------------------------------:::::.................:::::--------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++=+++*+++==+++*****++=-::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................::::::::::::::::::::................:::::=#######-...:+############*-*%######################%%###################%%##%####################%%%%#**+++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*%%%##########%%%#*+++++++++++++================================================---------*###%%%%%%%%%%%%%%%%%%%%#-:::::::::::::::::::::::::::..............                             .**********************+==========----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                                   ...:::::::::::::::::.....             ........................................                        ................................................................................................::::------------------------------------------------------------------================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::---==++++==---:::::::::::--==++*******+==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::---==--:::............................:::------:::.............:::::.......................:::::::.......................................................................................................................................:::::::::::::::::::::.............:::.............................................................................:::::---------::::::::::::::::::::::::::::::::::--------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------::::::::::---------------------====+++++++++++++++++++++=====================++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================================================================================================================================================++++*******************************************************************################################################################################################################################################################################################################################################################################################################*###########*************************************************************************************************************#############***++=================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#######################################################################################################*******++++++++++********++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++#%%%%%@@@@@@@@@%%%%#*::........::::::-----------------------------------------------------:::::::::::------------------------------------------------------------------------------------------------------------------:::::.................:::::--------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@#++++++++++==+++*****++=-::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................::::::::::::::::::::................:::::-#######-...:*############*-*%######################%%###################%%%#%###################%%%%%#**+++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%##########%%%#*+++++++++++++================================================--------*####%%%%%%%%%%%%%%%%%%%%%=-:::::::::::::::::::::::::...............                             .***********************==========-----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                                ...:::::::::::::::::.....                ...................................                             .............................................................................................::::------------------------------------------------------------------===============================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::---==++++==---:::::::::::---==++*****++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................:::--==--:::.............................:::-----:::..............::::.......................:::::::.......................................................................................................................................:::::::::::::::::::::.............................................................................................:::::---------::::::::::::::::::::::::::::::::::-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------::::::::::---------------------====++++++++++++++++===============----=======+++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================================================================================================================+++++*************************************************************############################################################################################################################################################################################################################################################################################################################*************************************************************************************************************#############***++=================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#######################################################################################################*******++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%@@@@@@@@@%%%%#*::........::::::-----------------------------------------------------:::::::::::------------------------------------------------------------------------------------------------------------------:::::.................:::::---------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%*+++++*+++===++*****++=-::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................::::::::::::::::::::................:::::-#######-...-#############+-########################%%###################%%%#%###################%%%%##**+++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%##########%%%#*+++++++++++++================================================-------*####%%%%%%%%%%%%%%%%%%%%%%*-:::::::::::::::::::::::::...............                             -***********************+=========------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                              ...:::::::::::::::::.....                   ............................                                    ..   .....................................................................................::::------------------------------------------------------------------===============================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::---==++++==---::::::::::::--===+++*+++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................:::--=---:::.............................::::----:::..............::::.......................:::::::..................................................................................................::::.................................::::::::::::::::::::::..........................................................................................:::::::---------::::::::::::::::::::::::::::::::::-------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------:::::::::----------------------=====++++++++++++==============-----------=====+++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================================================================================++++++******************************************************############################################################################################################################################################################################################################################################################################################################*************************************************************************************************************##############**++=================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#######################################################################################################*******++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%@@@@@@@@@%%%%#*::........:::::------------------------------------------------------:::::::::::------------------------------------------------------------------------------------------------------------------:::::.................:::::----------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%*++++++++===++*****+==-::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............:::::::::::::::::::::................:::::-#######-...=#############=-########################%%###################%%%#%##################%%%@%#**+++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%######%%#%%%#*+++++++++++++===============================================------=#%##%%%%%%%%%%%%%%%%%%%%%%%%#=:::::::::::::::::::::::::...............                             =***********************+=========------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::                             ...:::::::::::::::::.....                     ........................                                            ....................................................................................::::-----------------------------------------------------------------================================================================================================================--------------::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::--==+++===--::::::::::::::---==+++++===--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................::------:::..............................::::----:::.............::::........................:::::..................................................................................................:::::::..............................:::::::::::::::::::::::.........................................................................................::::::::---------::::::::::::::::::::::::::::::::::-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------::::::::-----------------------====+++++++++++===========--------:::----=====+++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================================================================================================++++++***********************************************############################################################################################################################################################################################################################################################################################################################*************************************************************************************************************##############**++=================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#######################################################################################################******+++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%@@@@@@@%%%%%#*::.......::::::------------------------------------------------------::::::::::-------------------------------------------------------------------------------------------------------------------:::::.................::::----------------------------------------------------------:+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++++++====++*****+==-::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::::::.................:::::-#######-..:+############*--%#######################%%###################%%%%%##################%%%@%#**+++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%######%%%%%%#**++++++++++++===============================================-----=#%#%%%%%%%%%%%%%%%%%%%%%%%%%%#+:::::::::::::::::::::::::...............                             +************************==========-----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                           ...:::::::::::::::::.....                      ...............    ....                                             ...................................................................................::::-----------------------------------------------------------------================================================================================================================--------------::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::--===+===---:::::::::::::::---=======---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................::------::................................:::----:::.............::::........................:::::..................................................................................................:::::::..............................:::::::::::::::::::::::.....................................................................................::::::::::::--------::::::::::::::::::::::........:::::------------------::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------::::::::------------------------====+++++++++======-----------::::::::---===================++++++++++++++++++++++++++++++++++++++++++++++++++++++======+++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================================================================================+=======+=++********************************************############################################################################################################################################################################################################################################################################################################################*************************************************************************************************************##############***++================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#######################################################################################################******+++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%@%%@@@%%%%%#*::.......::::::------------------------------------------------------::::::::::------------------------------------------------------------------------------------------------------------------:::::..................::::------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%*++++=====++*****+==-::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................::::::::::::::::::::::::::::.............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................:::::-#######-..:*############*-=%#######################%%###################%%%%%#################%%@@%#***++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*%%%%%%#####%%%%%%#**++++++++++++==============================================-----+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*-::::::::::::::::::::::::...............                             *************************+=========------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                          ...::::::::::::::::......                         ............                                                      ..................................................................................::::-----------------------------------------------------------------================================================================================================================--------------::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::--=======--::::::::::::::::-----===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................:::----:::................................::::---:::.............::::........................:::::.................................................................................................:::::::::.............................:::::::::::::::::::::::.................................................................................:::::::::::::::::------:::::::::::::::::::............:::::------------------::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------::::::::-------------------------====+++++++=====----------:::::::::::---===================++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================================================================================================================================++*****************************************############################################################################################################################################################################################################################################################################################################################*************************************************************************************************************##############***++================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#######################################################################################################******+++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%#%%%%%%%%%#*::.......::::::------------------------------------------------------::::::::::------------------------------------------------------------------------------------------------------------------:::::.................:::::-----------------------------------------------------------:=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++======++*****+=--::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::::::::::::::::::::.....................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............:::::::#######-..-#############+-+%#######################%%###################%%%%%#################%@@%%#**+++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%####%%%%%%#**++++++++++++==============================================----*%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%#*-::::::::::::::::::::::::...............                            .*************************+=========------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                         ...::::::::::::::::.....                             .........                                                        ................................................................................::::-----------------------------------------------------------------================================================================================================================-------------::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::--======---::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................:::----:::.................................:::----:::............:::.........................:::::.................................................................................................:::::::::..............................:::::::::::::::::::::::............................................................................:::::::::::::::::::::::::::::::::::::::::.................:::::------------------::::::::::::::::--------::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------:::::::--------------------------====++++++====--------::::::::...:::--====================+++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++=++++++++++++++================================================================================================================================================================================================================================++==++****************************************############################################################################################################################################################################################################################################################################################################################*************************************************************************************************************###############**++================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#######################################################################################################******++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%#*%%%%%%%%%#*::.......::::::------------------------------------------------------::::::::::------------------------------------------------------------------------------------------------------------------:::::.................:::::-------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%#++=======+*****+=--::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................:::::::::::::::::::::::::::...........................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............:::::::#######-..-#############=:*%#######################%%###################%%%%%################%%@%%#***+++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%####%%%%%%#**++++++++++++==============================================---#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###=::::::::::::::::::::::::...............                            :**************************+========-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                       ...::::::::::::::::.....                              ......                                                          .................................................................................:::-----------------------------------------------------------------========================================================================================------==================-------------::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---=====---:::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................:::----:::.................................:::----:::............:::.........................::::..................................................................................................::::::::::.............................:::::::::::::::::::::::........................................................................:::::::::::::::::::::::::::::::::::::::::.....................:::::------------------::::::::::::::-----------::::::::::::--------------------------------------------------------------------------------------------------------------------------------:::::::---------------------------===++++++===-----:::::::::::....:::--====================+++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++==+++++++++++===========++++++++++===================================================================================================================================================================================================================++**************************************############################################################################################################################################################################################################################################################################################################################*************************************************************************************************************###############**++================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****########################################################################################################******++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%*+#%%%%%%%%#+:........::::::-------------------------------------------------------:::::::--------------------------------------------------------------------------------------------------------------------:::::.................:::::--------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%#+==-=-==++***++=-::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::::::::::::::::::........................:::::::::::::::::::::::::::..............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::::::::*######-..+#############=:#%#######################%####################%%%%#################%@@@%#**++++++++++++++++++++++++++++***#******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%#%#####%#%%%%#**++++++++++++=============================================---#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###+::::::::::::::::::::::::...............                            =**************************+=========------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:.                      ...:::::::::::::::......                                                                                              .................................................................................:::-----------------------------------------------------------------======================================================================================----======================-------------::::----------------------------------------------------------------------------------::----------------------:--------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---=====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................:::---:::..................................::::---:::............:::..........................::..................................................................................................:::::--::::............................::::::::::::::::::::::::.....................................................................:::::::::::::::::::::::::::::::::::::::..........................:::::------------------::::::::::::------===------:::::-------------------------------------------------------------------------------------------------------------------------------------::::::----------------------------===++++++===----::::::::::::....:::--=====================++++++++++++++++++++++++++++++++++++++++++++++++++++===--====+++++++++++++++++++++++++++++++==+++++++=======+++++++++++++++++++==================================================================================================================================================================================================================++***************************************##########################################################################################################################################################################################################################################################################################################################*************************************************************************************************************###############**++================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################################################*****++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%#*+#%%%%%%%%#+:........::::::--------------------------------------------------------::::::--------------------------------------------------------------------------------------------------------------------:::::.................::::---------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*==---==++***++=-::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------:::::::::::::::.......................:::::::::::::::::::::::::::................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*######-.:*############*--#%#######################%####################%%%%################%@%%%#***++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%%%%####%#%%%%#***+++++++++++==============================================-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**::::::::::::::::::::::::...............                            +***************************=========------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.                     ...:::::::::::::::......                                                                                                 ..............................................................................:::-----------------------------------------------------------------====================================================================================---=========================-------------:::-----------------------------------------------------------------------------------:--------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................:::::............::::--:::..................................::::---:::............:::..............................................................................................................................::::----::::...........................::::::::::::::::::::::::..................................................................::::::::::::::::::::::::::::::::::::::::............................:::::------------------::::::::::::-----=====-----------------------------------------------------------------------------------------------------------------------------------------------::::::----------------------------===++++++===---::::::::::::.....:::--=====================++++++++++++++++++++++++++++++++++++++++++++++++++++===---===+++++++++++++++++++++++++++++++++==+++=====++++++++++++++++++++++++++===============================================================================================================================================================================================================++***************************************##########################################################################################################################################################################################################################################################################################################################*************************************************************************************************************###############**+++===============================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################################################*****++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%*++#%%%%%%%##+:........::::::--------------------------------------------------------:::::---------------------------------------------------------------------------------------------------------------------::::..................::::----------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%*=----=++**++==-::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------::::::::::::::.....................::::::::::::::::::::::::::...................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*######-.:#############+--%%#######################%####################%%%%################%@@%%***++++++++++++++++++++++++++++**#*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*##%##%%%%#####%%%%#***+++++++++++=============================================-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####-:::::::::::::::::::::::...............                            ****************************+========-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::::::::::::                    ...:::::::::::::::......                                                                                                    ...........................................................................:::-----------------------------------------------------------------===================================================================================---==========================-------------:::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::--====---:::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................::::::::..........:::::::::..................................::::----::............:::..............................................................................................................................:::-----::::...........................::::::::::::::::::::::::..............................................................::::::::::::::::::::::::::::::::::::::::::..............................::::-------------------:::::::::::----=======------------------------------------------------------------------------------------------------------------------------------------------------:::::----------------------::----===++++++===---::::::::::::.....:::--====================++++++++++++++++++++++++++++++++++++++++++++++++++++===----===+++++++++++++++++++++++++++++++++++==++++++++++++++++++++++++++++++++++==============================================================================================================================================================================================================++**************************************###########################################################################################################################################################################################################################################################################################################################************************************************************************************************************###############**+++===============================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################################################*****++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%#*+*#%%%%%%%##+:........:::::----------------------------------------------------------:::---------------------------------------------------------------------------------------------------------------------:::::..................::::----------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+----==+++++=--::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::...................::::::::::::::::::::::::::.....................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*######-.-#############+:=%########################%###################%%%%%###############%@%@%#***++++++++++++++++++++++++++++*#*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%########%%%%%####%%%%#***+++++++++++============================================-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####+:::::::::::::::::::::::............ .                            .****************************+========--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .-:::::::::::-:.                  ...:::::::::::::::......                                                                                                          .....................................................................:::----------------------------------------------:------------------================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::--===----:::::::::::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................::::::::::.........:::::::::...................................:::----:::...........:::..............................................................................................................................:::------:::...........................:::::::::::::::::::::::::..........................................................:::::::::::::::::::::::::::::::::::........................................::::--------------------:::::::::-----=======------------------------------------------------------------------------------------------------------------------------------------------------::::----------------------::::----===+++++===--:::::::::::::.....::---======++++++++=====+++++++++++++++++++++++++++++++++++++++++++++++++++++===-----==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================+==+**************************************############################################################################################################################################################################################################################################################################################################################***********************************************************************************************************###############***++===============================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################*######*****++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##*++*#%%%%%%%##+:.......::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::..................::::-----------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%#=---==++++==-::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------:::::::::::::::.............:::::::::::::::::::::::::........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*#%####=:+#############=:+%%######################%%###################%%%%%##############%@@%@#****++++++++++++++++++++++++++++*#******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#*######%%%%%####%%%%#***+++++++++++=============================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*:::::::::::::::::::::::............                              -*****************************+=======--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .:::::::-::::::.                 ...::::::::::::::.......                                                                                                           ....................................................................:::--------------------------------------------:::::----------------===============================================================================================================------------------------------------------------------------:------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::--===---:::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................:::::::::::........:::::::::...................................:::----:::...........::::.............................................................................................................................:::------:::...........................:::::::::::::::::::::::::........................................................::::::::::::::::::::::::::::::::............................................:::::---------------------::::::-------=======-------------------------------------------------------------------------------------------------------------------------------------------------:::----------------------::::----===+++++===--:::::::::::::.....::--======++++++++++===++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================++*************************************#############################################################################################################################################################################################################################################################################################################################*#*******************************************************************************************************#################**++===============================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################*#####******++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*++*%%%%%%%%##+:.......::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.................:::::-----------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@*----==++===-::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------:::::::::::::::...........:::::::::::::::::::::::::.........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*#%####=:*############*=:#%%######################%%###################%%%%%##############%@@@%#***++++++++++++++++++++++++++++*#******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%#%%%%%%%%%%%%%%%%#%#*######%%%%%#####%%%#***+++++++++++===========================================-#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####::::::::::::::::::::::.............                              =*****************************+========--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .:::::::::::::::.               ...::::::::::::::.......                                                                                                            ...................................................................:::-------------------------------------------:::::::----------------==============================================================================================================------------:---------------------------------------------:-:------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---===---::::::::::::::::::::::::::::----======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................::::----::::.......::::::::....................................:::----:::...........::::.............................................................................................................................::-------:::............................::::::::::::::::::::::::.....................................................:::::::::::::::::::::::::::::.................................................::::::----------------------------------======---------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::----===+++++===--:::::::::::::....:::--====+=+++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++==------===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++========================================================================================================================================================================================================+*************************************#################################################################################################################################################################################################################################################################################################################################*****************************************************************************************************#################**+++==============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****########################################################################################################******++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#+++*%%%%%%%%##+:.......::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.................:::::------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%+----=====--::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------::::::::::::::::.........:::::::::::::::::::::::::..........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*#%####+:*############*-:#%#######################%%###################%%%%%#############%@@%%#****++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%####%%%%%%%%%%%%####*#######%%%%%####%%%#***+++++++++++===========================================+%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####=:::::::::::::::::::::.............                              +******************************========---------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   :::::::::-:::-:.              ...::::::::::::::......                                                                                                               .................................................................:::-------------------------------------------:::::::----------------==============================================================================================================------------:---------------------------------------------:-::-----------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---==----:::::::::::::::::::::::::::----=========---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................::::-----:::.......::::::::....................................:::----:::...........::::............................................................................................................................:::-------:::............................::::::::::::::::::::::::...................................................:::::::::::::::::::::::::::....................................................::::::------------------------------------=-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::----===+++++===--:::::::::::::....::---====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==------===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================================================================================+*************************************##################################################################################################################################################################################################################################################################################################################################****************************************************************************************************#################**+++==============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****########################################################################################################******++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++*%%%%%%%%##+:.......::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.................:::::------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@%=---====--:::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:--::::::::::::::::::::::::::::---------------------------::::::::::::::........::::::::::::::::::::::::............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----::*#%####+-#############+:-%%#######################%%###################%%%%%#############%@@@%*****+++++++++++++++++++++++++++*#******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%###########%%%%########%%%%%%%%############%%%%%%###%%%##**+++++++++++===========================================%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*:::::::::::::::::::::.............                             .*******************************+=======---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   .::::::::::-:::.             ...::::::::::::::......                                                                                                               .................................................................:::-------------------------------------------:::::::----------------==============================================================================================================------------:---------------------------------------------:-::--:----------------------------------------------::-----------::-------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---==---::::::::::::::::::::::::::::---==========---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................:::-------:::......::::::::....................................:::-----::...........::::............................................................................................................................:::-------:::............................::::::::::::::::::::::::................................................:::::::::::::::::::::::::.......................................................::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::----===+++++===---:::::::::::::..:::--=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==------===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================================================================================================+*************************************###################################################################################################################################################################################################################################################################################################################################*******************#*******************************************************************************#################**+++==============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################**#******++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%##+:.......:::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.................:::::-------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%---------::......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::-----------------------------::::::::::::::......::::::::::::::::::::::::............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:*#%####+=#############+:=%%#######################%%##################%%%%%%############%@%@%#****++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%###%#*########%%##%%###%%%##**+++++++++++==============*%*+========================#%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######:::::::::::::::::::::...........                               :********************************=======----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   .:::::::::::::-:.           ..::::::::::::::.......                                                                                                                 ...............................................................:::-------------------------------------------::::::::---------------==========================-----==--===========================================================================-------------:::-------------------------------------------::::----------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---==---::::::::::::::::::::::::::::---====++=====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................::::------:::......::::::::....................................:::-----:::..........::::............................................................................................................................:::---=---:::............................::::::::::::::::::::::::...............................................::::::::::::::::::::.........................................................:::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::---===+++++===---:::::::::::::..:::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==------===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================================================================================================================================+************************************#####################################################################################################################################################################################################################################################################################################################################**************************************************************************************************#################***++==============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################*********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%##+:.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::.................::::--------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@#-------::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::-------------------------------::::::::::::......::::::::::::::::::::::::...........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:*#%####++############*=.+%%#######################%%##################%%%%%############%%%%@#*****+++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%#####*########%%%%%%%##%%%##**+++++++++++==============#%%#*=====================-*%%#%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######:::::::::::::::::::::...........                               -********************************========---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   .::::::-:::-::-:.          ..::::::::::::::.......                                                                                                                 ...............................................................:::-------------------------------------------::::::::----------------===========================---=---===========================================================================-------------:::-------------------------------------------::::----------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::---====+++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................::::------:::......::::::::....................................:::-----:::..........::::............................................................................................................................:::---=---:::.............................::::::::::::::::::::::::...............................................::::::::::::::..........................................................:::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::---===+++++===---:::::::::::::.::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::---==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================================================================================================================================+*************************************####################################################################################################################################################################################################################################################################################################################################**************************************************************************************************##################**++==============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################*********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%##+:.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.................:::::--------------------------------------------------------------------:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+:----:::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::-----------------------------------::::::::......::::::::::::::::::::::::...........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------*#%####*#############*-.#%########################%%##################%%%%%############%@%@%#****++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################*########%%%%#%%##%%%##**+++++++++++==============%%%%%+=====================%%##%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######-::::::::::::::::::::...........                               =********************************+=======----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    ::::::::::-::::.        ...::::::::::::::.......                                                                                                                  ..............................................................:::-------------------------------------------:::::::::---------------===========================--------==========================================================================------------:::::-----------------------------------------:::::----------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::----==---:::::::::::::::::::::::::::---===++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................::::------:::......::::::::....................................:::-----:::..........::::............................................................................................................................:::---=---:::.............................::::::::::::::::::::::::.....................:::::::::::::.................................................................................:::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::---===+++++===---:::::::::::::.:::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================+*************************************#####################################################################################################################################################################################################################################################################################################################################*************************************************************************************************##################**++==============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################*********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%##+:.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.................:::::----------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%=:--::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::::::::::::::::::::::::::::-------------------------------------:::::::.....:::::::::::::::::::::::............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----*%%####*#############+-.%%########################%###################%%%%%###########%@@@%#****+++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################*########%%%%#%%%##%%##**+++++++++++==============%%%%%#+===================#%####%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######-::::::::::::::::::::...........                               +*********************************=======----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    .::::::-::-::-::.      ...::::::::::::::.......                                                                                                                  .............................................................::::--------------------------------------------::::::::---------------===========================--------==========================================================================------------:::::----------------------------------------::::::----------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::----==---:::::::::::::::::::::::::::---===+++++++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::------:::......::::::::....................................:::------:::.........::::............................................................................................................................:::---=---:::.............................:::::::::::::::::::::::::...........:::::::::::::::::::::::::::::::::.....................................................................::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::---===+++++===---:::::::::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================================================================================================================================+*************************************######################################################################################################################################################################################################################################################################################################################################************************************************************************************************##################**+++=============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################*********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%##=:.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.................:::::----------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@#-:::::........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------::::::.....:::::::::::::::::::::::...........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----*%%##################+::%%########################%###################%%%%%##########%%@%@%*****++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*#########%%%%%%%%##%%##**++++++++++==============*#%%%%%#==================+%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######-::::::::::::::::::::...........                              .**********************************+======-=---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    .::::::::::::-::.     ...::::::::::::::.......                                                                                                                  .............................................................::::--------------------------------------------:::::::::--------------===========================---------========================================================================-----------:-::::::--------------------------------------::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::---===--::::::::::::::::::::::::::::---===+++++++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::------:::......:::::::.....................................:::------:::.........::::............................................................................................................................:::---==--:::.............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::---===+++++===---:::::::::::::::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================================================+**************************************######################################################################################################################################################################################################################################################################################################################################************************************************************************************************##################**+++=============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################*********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%##=:.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..................:::::-----------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@*:::::........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------::::::....:::::::::::::::::::::::..........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----*%%#################*+.-%########################%%###################%%%%%##########%@@@%#*****++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*########%%%%%%%%%%##%##**++++++++++=============+###%%%%%+=================%%#%#%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######=::::::::::::::::::::...........                              :**********************************+======-=----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    .::-::--::-::::::.   ...::::::::::::::......                                                                                                                   .............................................................::::---------------------------------------------:::::::::--------------===========================---------=======================================================================-----------:::::::::-------------------------------------:::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::---===--::::::::::::::::::::::::::::---===+++++++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::------:::.......::::::.....................................:::------::::........::::............................................................................................................................:::---==--:::.............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................:::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::---===+++++===---:::::::::::::::::-====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================================================================================+**************************************######################################################################################################################################################################################################################################################################################################################################************************************************************************************************##################***++=============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################*********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%#*=:.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..................:::::-----------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%@%=::::........::::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------::::::....:::::::::::::::::::::::..........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----*%%#################*=.+%########################%%###################%%%%%#########%@@%%#*****++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*########%%%%%%%%%%#####**++++++++++=============####%%%%%#================#%#%#%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*::::::::::::::::::::..........                               =*********************+*************=======-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.     :::::::-::::::-:. ...:::::::::::::::......                                                                                                                   .............................................................::::----------------------------------------------::::::::--------------===========================---------======================================================================------------:::::::::-------------------------------------:::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---====--::::::::::::::::::::::::::::---===+++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::-----:::........::::::.....................................:::--==---:::........::::..............................:..............................................................................................::---==--:::............................:::::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::---===+++++===---::::::::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---:::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================================================================================+***************************************######################################################################################################################################################################################################################################################################################################################################***********************************************************************************************###################***++=============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################*********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%#*=:......::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::..................::::-------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%@%-:::........::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------::::::....:::::::::::::::::::::::.........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----*%%#################+-.#%########################%%###################%%%%%########%%@%%%#****+++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*########%%%%%%%%%%#####**++++++++++============*%####%%%%%+==============*%%##%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######::::::::::::::::::::..........                               +*********************+*************+=======----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.     .:::-::::::::::::...:::::::::::::::......                                                                                                                  ..............................................................::::----------------------------------------------::::::::--------------============================--------======================================================================-----------::::::::::-------------------------------------:::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---====--:::::::::::::------:::::::::---===++++++++===--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::-----:::........::::::.....................................:::--==---:::........::::.............................::..............................................................................................::---==--:::............................:::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::---===+++++===---::::::::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::-===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================++***************************************######################################################################################################################################################################################################################################################################################################################################***********************************************************************************************###################***++=============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################*#**********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%#*=:......::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::..................::::------------------------------------------------------------------------:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@#:::........:::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------::::::....:::::::::::::::::::::::........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----*%%#################+:.#%########################%%###################%%%%%########%@%%%#*****++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################**########%%%%%%%%%%%####**++++++++++===========*%#####%%%%%#=============+%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######::::::::::::::::::::..........                              .**********************+**************=======-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::       :::::::::::::::::.:::::::::::::::......                                                                .                                                  .............................................................::::----------------------------------------------:::::::::--------------===========================---------================================-====================================-----------:::::::::------------------:--------------::::::::::::-::------------------:-------------------:----------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::---=====--:::::::::::----------::::::----==+++++++++===--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::-----:::........:::::......................................:::--===--::::.......::::.............................:::.............................................................................................::---==--:::...........................:::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................:::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::---===+++++===---:::::::::::::::---====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================================================================================================================++****************************************######################################################################################################################################################################################################################################################################################################################################***********************************************************************************************####################**++=============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################*#**********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%##*=:......::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::..................::::--------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@+::........::::::::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------::::::.....::::::::::::::::::::::........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----*%%#################=.:%#########################%%###################%%%%%#######%@@%%#*****++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*########%%%%%%%%%%%%####**++++++++++==========+########%%%%%*=======-====#%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######-:::::::::::::::::::..........                              .**********************++*************+=======-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::       .::::::-::::-:::::::::::::::::::......                                                                .                                                  ............................................................:::::-----------------------------------------------::::::::--------------===========================---------================================-====================================-----------:::::::::------------------:---------------:::::::::::-::------------------:-------------------:::--------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::---=====--::::::::::-------------::::---===+++++++++===--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::-----:::........:::::......................................:::--====--:::.......::::.............................:::.............................................................................................::---==--:::...........................:::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::---===+++++===---:::::::::::::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++===================================================================================================================================================================++*****************************************######################################################################################################################################################################################################################################################################################################################################***********************************************************************************************####################**++=============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################*#*********+++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%##*-:......::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::.................:::::-------------------------------------------------------------------------:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%=:........:::::::::::::::::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------::::::.....::::::::::::::::::::::.......................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----*%%################*=.=%#########################%%##################%%%%%########%@%%%#*****++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%########*########%%%%%%%%%%%%####*+++++++++++==========#%########%%%%#==========-*%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######-:::::::::::::::::::..........                              -**********************++*************+=======-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::        ..:-::::::::::::::::::::::::::......                                                                .                                                   ..........................................................::::::-----------------------------------------------:::::::---------------============================--------==============================--====================================------------::::::::::----------------::----------------:::::::::::::------------------:-------------------:::::-----------------------::::::::-----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::--======--:::::::::----======-----------===+++++++++===--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::-----:::.........:::.......................................:::--====--:::.......::::.............................:::.............................................................................................::--===--:::.......................::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................:::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::---===+++++===---:::::::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++==============================================================================================================================================================+*******************************************#######################################################################################################################################################################################################################################################################################################################################**********************************************************************************************####################**+++============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##############################################################################################*****#*********+++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%##*-.......:::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::..................:::::--------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%-:.......:::::::::::::::::::::::::---====----::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------:::::::.....::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---#%%################*- *%#########################%###################%%%%%#######%@%%%#*****++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%########*########%%%%%%%%%%%%####*+++++++++++=========*%#########%%%%%*========-+%#%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######+:::::::::::::::::::..........                              =***********************+**************========-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.         .:-:-::::::::::::::::::::::.......                                                               ..                                                   .........................................................::::::-------------------------------------------------:::::-----------------===========================---------=============================-===================================-=------------::::::::::-------------::::::---------------:::::::::::::------------------::-----------------::::::::---------------------::::::::-----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::--======--::::::::----========---------====+++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::----::::...................................................:::--=====-:::........::.............................:::::............................................................................................::--===--:::....................:::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==+++++===---:::::::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++**++++========================================================================================================================================================++*********************************************########################################################################################################################################################################################################################################################################################################################################*********************************************************************************************####################***++============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****########################################################################################*********************+++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%##*-.......:::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::..................:::::---------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*:.......::::::::::::::::::::::::---======---::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------:::::::.....::::::::::::::::::::::......................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---#%%################+- #%#########################%###################%%%%%######%@@%%#******+++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%#*#######%%%%%%%%%%%%%%###*+++++++++++========+############%%%%%+======-=#%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*:::::::::::::::::::..........                              =***********************=+*************+=======-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.         .:-:::::::::::::::::::::::.......                                                               ..                                                   ........................................................:::::::-----------------------------------------------------------------------============================--------=============================-===================================--------------::::::::::-------------:::::::------------:::::::::::::::-------------------------------------:::::::::--------------------::::::::-----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::--=======--::::::::---============----======+++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................:::---:::....................................................:::--=====--::........::.............................:::::............................................................................................::--===--:::.............::::::::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::---==+++++===---::::::::::::::--=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++====================================================================================================================================================+***********************************************########################################################################################################################################################################################################################################################################################################################################*********************************************************************************************####################***++============================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****######################################################################################***********************+++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%##+::......:::::-----------------------------------------------------------------------------------------::--------------------------------------------------------------------------------------:::::..................::::----------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+......:::::::::::::::::::::::::---======----::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------::::::::.....::::::::::::::::::::::......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--#%%################+..%%########################%%###################%%%%%######%@%%%#*****++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################*#######%%%%%%%%%%%%%%%###*+++++++++++=======+#%############%%%%*=====-=#%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########::::::::::::::::::...........                              +***********************++**************========-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.          :::-::::::::::::::::::::.......                                                                .                                                  .......................................................:::::::::-----------------------------------------------------------------------============================---------===========================-====================================-----------:--::::::::::------------:::::::::---------:::::::::::::::::-----------------:-------------------::::::::::-------------------::::::::-----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::--===++==---::::::---======================++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::....................................................:::--=====--:::........:.............................::::::..........................................................................................:::--===---:::........::::::::::::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................:::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==+++++===---::::::::::::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++================================================================================================================================================++************************************************#########################################################################################################################################################################################################################################################################################################################################********************************************************************************************#####################**++============================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****####################################################################################*************************+++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%##+:.......:::::----------------------------------------------------------------------------------------::::-------------------------------------------------------------------------------------:::::..................::::-----------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-.....:::::::::::::::::::::::::--=======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------::::::::.....:::::::::::::::::::::......................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--#%%################=.-%#########################%%###################%%%%%#####%@%%%#*****++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%##*######%%%%%%%%%%%%%%%%###**++++++++++=======*%#############%%%%%+=====*%%%%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########-:::::::::::::::::...........                             .+***********************+=**************+=======------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.          :-:::::::::::::::::::::.......                                                                .                                                  .......................................................::::::::-------------------------------------------------------------------------============================--------==========================--====================================-----------::-::::::::::------------::::::::::-------::::::::::::::::::-----------------:------------------:::::::::::-------------------::::::::-----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::--===+++===--::::::---====+++++============+++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::....................................................:::--=====--:::........:.............................::::::..........:::.............................................................................::--=====--::::::::::::::::::::::::::::::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::---==+++++===---::::::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*++*+++++**++++==========================================================================================++*****+++++++++++==============================++**************************************************#########################################################################################################################################################################################################################################################################################################################################********************************************************************************************#####################**++============================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##################################################################################**************************+++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%#*=:......::::::----------------------------------------------------------------------------------------::::-------------------------------------------------------------------------------------:::::..................::::-----------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%:....:::::::::::::::::::::::::--===++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------::::::::.....:::::::::::::::::::::......................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--#%%###############*- =%#########################%%###################%%%%%####%%%%%#******+++++++++++++++++++++++++++****+++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%##*####%#%%%%%%%%%%%%%%%%###**++++++++++======+%%#############%%%%%#====*%%%#%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########-:::::::::::::::::...........                             .************************+=**************+=======------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::           :::::::::::::::::::::........                                                                .                                                  ......................................................:::::::::-------------------------------------------------------------------------============================--------==========================-=====================================-----------::-::::::::::------------::::::::::::::--::::::::::::::::::::----------------:------------------:::::::::::-------------------::::::::-----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::---==++++===--::::::--====++++++++=========++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::....................................................:::--=====--:::......................................::::::..........::::............................................................................::--=====---:::::::::::::::::::::::::::::::::::::--------------:::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::.................................:::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::---==++++++===--:::::::::::::--=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---:::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++======================================================================================+************************+++++++===============++***************************************************##########################################################################################################################################################################################################################################################################################################################################********************************************************************************************#####################**++============================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#################################################################################**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%#*-:......::::::---------------------------------------------------------------------------------------::::--------------------------------------------------------------------------------------::::..................:::::------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#:...:::::::::::::::::::::::::--==++++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::.....:::::::::::::::::::::......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=%%%###############*: *%#########################%###################%%%%%%####%@%%%#*****++++++++++++++++++++++++++++**++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%#%#*##%##%%%%%%%%%%%##%%%%####*++++++++++======#%%%#############%%%%%*===%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########=:::::::::::::::::...........                             .************************+=+**************+=======-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::           .:::::::::::::::::::........                                                                ..                                               ........................................................:::::::::-------------------------------------------------------------------------============================---------========================-=====================================------------:::::::::::::-------------:::::::::::::::::::::::::::::::::::-----------------------------------:::::::::::-----------------::::::::::::::::::---------------------------------------------------------------------:::::::::::::::::::::::::::::::::--===+++++==--:::::---====+++++++++++==++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................:::::::......................................................::--==+===--::......................................:::::::........:::::............................................................................::--======---::::::::::::::::::::::::::::::::::----------------:::::::::::::::::::::::::::::::::::---------------:::::::::::::::::::::::::..............::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==++++++===---::::::::::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---::::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================================================+***************************************++++++*******************************************************###########################################################################################################################################################################################################################################################################################################################################******************************************************************************************#####################**+++===========================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##############################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%##*-:......::::::--------------------------------------------------------------------------------------:::::--------------------------------------------------------------------------------------::::..................:::::------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+..::.:::::::::::::::::::::::--==++++==----::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::....:::::::::::::::::::::......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+%%%###############+..#%########################%%###################%%%%%####%%%%%#******+++++++++++++++++++++++++++***+++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%##%%%%####*++++++++++=====*%%%%#############%%%%%%+=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*:::::::::::::::::...........                             .************************+=+**************+========------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-:           .::::::::::::::::::........                                                                ..                                               .......................................................::::::::::-------------------------------------------------------------------------=============================--------========================-=====================================-----------::::::::::::::-------------:::::::::::::::::::::::::::::::::::----------------------------------::::::::::::----------------:::::::::::::::::::---------------------------------------------------------------------::::::::::::::::::::::::::::::::---==++++++==---::::---===++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................:::::::......................................................::--==+===--::......................................:::::::........:::::...........................................................................:::--===+===---::::::::::::::::::::::::::::::::-----------------:::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==++++++===---::::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---:::::...:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++==============================================================================+*****************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################****************************************************************************************#####################**+++===========================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****############################################################################*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%##*-:......::::::--------------------------------------------------------------------------------------::::::-------------------------------------------------------------------------------------::::..................:::::-------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=..:::::::::::::::::::::::::--==++++==----::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::::::::::::......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-+%%%###############= -%%########################%%###################%%%%%###%%@%%#******+++++++++++++++++++++++++++****++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################*####%%%%%%%%%%%%%###%%%%###*++++++++++====+%%%#%#############%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########:::::::::::::::::..........                              :************************+==***************========-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::.          .::::::::::::::::::.......                                                                ..                                              ........................................................::::::::::--------------------------------------------------------------------------============================--------======================---=====================================-----------::::::::::::::-------------:::::::::::::::::::::::::::::::::::----------------------------------::::::::::::----------------:::::::::::::::::::---------------------------------------------------------------------::::::::::::::::::::::::::::::::--===+++++++==--:::----===++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................:::::.......................................................::--==+===--::......................................:::::::.......::::::.........................................................................::::--===+++===---:::::::::::::::::::::::::::::::-----------------:::::::::::::::::::::::::::--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==++++++===---:::::::::::---===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::.....::::-===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++=========================================================================+*****************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################**************************************************************************************######################***++===========================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########################################################################********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%##+::......::::::-------------------------------------------------------------------------------------:::::::------------------------------------------------------------------------------------:::::..................:::::-------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%-..::::::::::::::::::::::::--==++++==----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::----------------------------::::::::::::::::::::::::::::::::::......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-*%%%###############- =%%########################%%###################%%%%%##%%%%%%#******++++++++++++++++++++++++++****++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%####*####%%%%%%%%%%%%%###%%%%####++++++++++====#%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########:::::::::::::::::..........                              :************************+==+**************+========------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::.          .::::::::::::::::::......                                                                ..                                            .........................................................:::::::::::--------------------------------------------------------------------------============================----------====================--=====================================------------::::::::::::::-------------:::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::---------------::::::::::::::::::::---------------------------------------------------------------------::::::::::::::::::::::::::::::::--==++++++++==---::---====++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................::.........................................................::--==+===--::........:.............................:::::::.......::::::.......................................................................::::::--===++++===---::::::::::::::::::::::::::::::------------------::::::::::::::::::::::::------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::---==++++++===---:::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::......::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++=====================================================================+*****************************************************************************************************################################################################################################################################################################################################################################################################################################################################################**************************************************************************************#######################**++===========================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########################################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%##+::......::::::------------------------------------------------------------------------------------::::::::------------------------------------------------------------------------------------:::::..................::::---------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@#::::::::::::::::::::::::::--===+++==----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------:::::::::::::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%%%##############*: *%#########################%%###################%%%%%##%%%%%#******++++++++++++++++++++++++++*****++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################*####%%%%%%%%%%%%%####%%%####*+++++++++===*%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########-::::::::::::::::..........                              -*************************==+**************+=======------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::.         ..::::::::::::::::::....                                                                  .                                           ........................:::::::::::::.....................:::::::::::--------------------------------------------------------------------------============================-----------==========================================================------------::::::::::::::-------------:::::::::::::::::::::::::::::::::::-------------------------------:-:::::::::::::---------------::::::::::::::::::::---------------------------------------------------------------------:::::::::::::::::::::::::::::::--===++++++++===-------===+++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................::--==++==--::........:.............................:::::::.......:::::::...................................................................:::::::::--==+++++++==---::::::::::::::::::::::::::::--------------------:::::::::::::::::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==++++++===---::::::::::---====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.......::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++************++++=================================================================+******************************************************************************************************########*###############################################################################################################################################################################################################################################################################################################################################################**************************************************************#######################**+++==========================================================================
**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###########################################################**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%##*=:.......::::::------------------------------------------------------------------------------------::::::::------------------------------------------------------------------------------------:::::..................::::---------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%@*:::::::::::::::::::::::::---==++===----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------::::::::::::::::::::::::::::::::::........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%%%##############+..#%########################%%####################%%%%%%#%@@%#******++++++++++++++++++++++++++*******++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################*####%%%%%%%%%%%%%####%%%####*+++++++++==+%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########-::::::::::::::::..........                              =*************************===***************+=======------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::        ..::::::::::::::::::::. .                                                                 .                                          ........................:::::::::::::::....................:::::::::::---------------------------------------------------------------------------============================-----------========================================================-------------::::::::::::::--------------:::::::::::::::::::::::::::::::::::------------------------------:::::::::::::::--------------:::::::::::::::::::::---------------------------------------------------------------------:::::::::::::::::::::::::::::::--==++++++++++==-------===+++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++==--::......................................::::::::......:::::::.................................................................::::::::::---==+++++++==---:::::::::::::::::::::::::::----------------------:::::::::::::::--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==++++++===---::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************++*******++++===========================================================+*******************************************************************************************************##########################################################################################################################################################################################################################################################################################################################################################################************************************************************#######################**+++==========================================================================
**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#####################################################****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%##*-:.......:::::----------------------------------------------------------------------=====---------:::::::::-----------------------------------------------------------------------------------::::::..................::::--------------------------------------------------------------------------------:-*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@+::::::::::::::::::::::::---=======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------::::::::::::::::::::::::::::::::.........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%%%##############= :#%########################%%####################%%%%%%%%@%%#******+++++++++++++++++++++++++*******+++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%%%####%%%####*+++++++++==*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########-::::::::::::::::..........                             .+*************************+==+**************+=======------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::      ...::::::::::::::::::::::.                                                                 .                                        .........................:::::::::::::::::..................::::::::::::---------------------------------------------------------------------------============================------------================-======================================-------------::::::::::::::---------------::::::::::::::::::::::::::::::::::------------------------------:::::::::::::::--------------:::::::::::::::::::::---------------------------------------------------------------------::::::::::::::::::::::::::::::--===++++++++++===-----====+++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++==--:::.....................................::::::::.....::::::::.............................................................::::::::::::::---==++++++++==---::::::::::::::::::::::::::-----------------------:::::::::::------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==+++++++===--::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+**********++********+++++====================================================++********************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################################################***************************************++++**************#######################***++==========================================================================
**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******####################################################*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%##*::......::::::---------------------------------------------------------------------========-------:::::::::-----------------------------------------------------------------------------------:::::...................::::-----------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+:::::::::::::::::::::::---======-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------:::::::::::::::::::::::::::::::..........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%%%##############- =%%########################%%####################%%%%%%%@@%#******++++++++++++++++++++++++++*******++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++*#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%#############*#####%%%%%%%%%%%%%#####%%#####+++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########=::::::::::::::::..........                             :**************************+==+***************========-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::.    ...:::::::::::::::::::::::.                                                                .                                        ........................:::::::::::::::::::.................::::::::::::---------------------------------------------------------------------------============================------------===============--======================================-------------::::::::::::::---------------::::::::::::::::::::::::::::::::::------------------------------:::::::::::::::---------::--::::::::::::::::::::::---------------------------------------------------------------------:::::::::::::::::::::::::::::---==++++++++++++===----====+++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++==--:::.....................................::::::::.....::::::::...........................................................::::::::::::::::---==++++++++===--::::::::::::::::::::::::::-----------------------::::::::----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==+++++++===--::::::::::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************++*********************+++++=============================================++**********************************************************************************************************################################################################################################################################################################################################################################################################################################################################################################################***********************************++++++************########################***++==========================================================================
**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******####################################################******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####+::......::::::--------------------------------------------------------------------==========------::::::::------------------------------------------------------------------------------------:::::..................:::::-----------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=:::::::::::::::::::::::---=====-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::...........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=%%%##############*:.*%#########################%%###################%%%%%%%%@%#******++++++++++++++++++++++++++*********+++++++++++++++*************++++++++++++++++++++++++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%###*####%%%%%%%%%%%%%######%%%####+++++++++=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%###########+::::::::::::::::.......... .                           -**************************+===***************+=======------------------------------------------:::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::-:   ...:::::::::::::::::::::::::                                                               .                                      ............................:::::::::::::::::.................::::::::::::---------------::-----------------------------------------------------------============================----------------------=-=--======================================-=------------::::::::::::::----------------::::::::::----:::::::::::::::::::------------------------------::::::::::::::------------::::::::::::::::::::::::::-------------------------------------------------------------------:::::::::::::::::::::::::::::---==+++++++++++++==---=====++++++++++++++++++++++++++++++++===--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++==--:::.....................................:::::::::....::::::::......................................................:::::::::::::::::::::--===+++++++++==---:::::::::::::::::::::::::------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::---===++++++===---::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..........:::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+************************************************+++++===================================+++*****************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################**********************************+++++++************########################***++==========================================================================
**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###############################################**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####=::......::::::-------------------------------------------------------------------============-----::::::::------------------------------------------------------------------------------------:::::..................:::::--------------------------------------------------------------------------------:---#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%-::::::::::::::::::::::---=====-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::.............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+%%%##############*..*%#########################%%###################%%%%%%%@%%#*****++++++++++++++++++++++++++*********+++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################*####%%%%%%%%%%%%%######%%%####*+++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%##%%%###########+::::::::::::::::......... .                            =**************************+===+**************+======--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::. ...::::::::::::::::::::::::-:.                                                             .                                      ...........................::::::::::::::::::.................::::::::::::---------------::-----------------------------------------------------------============================-----------------------==--======================================-=------------:::::::::::::------------------:::::--------:::::::::::::::::::---------------------------:--::::::::::::::------------:::::::::::::::::::::::::::------------------------------------------------------------------:::::::::::::::::::::::::::::--==++++++++++++++=========+++++++++++++++++++++++++++++++++===--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++==--:::.....................................:::::::::....::::::::....................................................::::::::::::::::::::::---===+++++++++==---:::::::::::::::::::::::::-------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::---===++++++===---::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..........::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++****************************************************************************++++++++==================+++++**********************************************************************************************************************###########################################################################################################################################################################################################################################################################################################################################################################*********************************+++++++*************#########################**++==========================================================================
**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********############################################**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++####*-::......::::::------------------------------------------------------------------=============-----:::::::-------------------------------------------------------------------------------------:::::..................:::::----------------------------------------------------------------------------------:-=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-:::::::::::::::::::::----===------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*%%%##############+.:#%#########################%%####################%%%%%%@%#******++++++++++++++++++++++++***********++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++*+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%########%%####*++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################*::::::::::::::::.......... ..                         .+**************************+===+***************+=====-=------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::-:::...::::::::::::::::::::::::::--:                                                            .                                     ............................:::::::::::::::::::................::::::::::::---------------::-----------------------------------------------------------============================-----------------------=--=======================================-------------::::::::::::::--------------------------------::::::::::::::::::--------------------------::::::::::::::::::--------::--:::::::::::::::::::::::::::------------------------------------------------------------------::::::::::::::::::::::::::::---==+++++++++++++++========+++++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++==--:::.....................................:::::::::.....:::::::.................................................:::::::::::::::::::::::::---===+++++**+++==---::::::::::::::::::::::::-------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::---===++++++===---::::::::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************+++**********************************************************************************************************************************************************************************************************************************###########################################################################################################################################################################################################################################################################################################################################################################*********************************+++++++*************#########################**+++=========================================================================
**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************###################################**************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++####*-::......::::::-----------------------------------------------------------------===============----::::::--------------------------------------------------------------------------------------:::::..................:::::------------------------------------------------------------------------------------:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-::::::::::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#%%%##############=.=%%########################%%#####################%%%%%@%#******+++++++++++++++++++++++++*#*********+++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################%#*####%%%%%%%%%%%%#########%%%####+++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*::::::::::::::::........ ..                           :***************************+====***************+=====-=-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::..::::::::::::::::::::::::-:::-:.                                                          ..                                  ...............................:::::::::::::::::.................::::::::::::---------------::------------------------------------------------------------============================----------------------=--======================================-=------------::::::::::::::----------------------------------:::::::::::::::::-----------------------::::::::::::::::::::-------:::::::::::::::::::::::::::::::::-----------------------------------------------------------------::::::::::::::::::::::::::::--===++++++++++++++++=======+++++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++===--::.....................................:::::::::.....:::::::...............................................:::::::::::::::::::::::::::---===++++****++==---::::::::::::::::::::::::--------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::---===+++++++===--:::::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************+*************************************************************************************************************************************************************************************************************************************##########################################################################################################################################################################################################################################################################################################################################################################*********************************+++++++************##########################**+++=========================================================================
**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************#########*****######************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###+:::......::::::----------------------------------------------------------------================----::::::--------------------------------------------------------------------------------------:::::..................:::::--------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@*:::::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%%%##############-.+%%########################%%#####################%%%%%%%#******+++++++++++++++++++++++*************+++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################%#*###%%%%%%%%%%%%###########%%####+++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################-::::::::::::::........ :+*+:                        .-***************************+====+***************=======--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::::--:::.                                                        ..                                  ................................::::::::::::::..................:::::::::::::---------------::------------------------------------------------------------============================------------------------======================================--=------------::::::::::::::----------------------------------:::::::::::::::::-----------------------::::::::::::::::::::-------:::::::::::::::::::::::::::::::::-----------------------------------------------------------------::::::::::::::::::::::::::::--==+++++++++++++++++======++++++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++===--::.....................................:::::::::.....::::::..............................................:::::::::::::::::::::::::::::---==+++++****+++==---::::::::::::::::::::::::-------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::---===+++++++===--:::::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################*********************************++++++*************##########################**+++=========================================================================
*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###=:::......:::::-----------------------------------------------------------------================----:::::---------------------------------------------------------------------------------------:::::.................:::::-----------------------------------------------------------------------------------:---=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@*::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%%##############*:.*%%########################%%#####################%%%%%%#******+++++++++++++++++++++++**##**********+++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%#%#*###%%%%%%%%%##%###########%%####*+++++#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*-::::::::::::::........-****=                        .=***************************+====+***************+=======-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::-:::::::::::::::::::::-::::::::::----:                                                        .                                 ....................................::::::::::...................:::::::::::::---------------::------------------------------------------------------------============================------------------------======================================---------------::::::::::::::-----------------------------------::::::::::::::::----------------------:::::::::::::::::::::-------:::::::::::::::::::::::::::::::::-----------------------------------------------------------------::::::::::::::::::::::::::::--==+++++++++++++++++++====++++++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==+++==--::.....................................::::::::::.....:::::............................................:::::::::::::::::::::::::::::::---==+++++*****++==---::::::::::::::::::::::::--------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::---===+++++++===--:::::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...........:::--==+++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################################################################################################################################################################################################################################*********************************++++++************###########################***++=========================================================================
*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##*=::.......:::::----------------------------------------------------------------=================----:::::-----====------------------------------------------------------------------------------::::..................:::::----------------------------------------------------------------------------------:----:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@%#::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=%%%##############+.:#%%########################%#####################%%%%%%#******+++++++++++++++++++++++**###*********++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%#######%%%%%%%%###############%%#####++++*@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################=::::::::::::::::.....-*****=                        :=****************************=====****************=======--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::-:::::::::::::::::....:::::--::-::::-:-:.                                                      .                                 .......................................::::......................:::::::::::::---------------::------------------------------------------------------------============================-----------------------======================================----------------:::::::::::::::----------------------------------::::::::::::::::---------------------:::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::----------------------------------------------------------------:::::::::::::::::::::::::::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==+++==--:::.............:::::..................::::::::::.......:............................................::::::::::::::::::::::::::::::::----==+++++******++=---::::::::::::::::::::::::--------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::---===++++++++==--::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...........:::--==+++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################################################################################################################################################################################################################################********************************++++++************###########################***++=========================================================================
********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*-::.......:::::----------------------------------------------------------------=================----:::::----======-----------------------------------------------------------------------------::::..................:::::--------------------------------------------------------------------------------:--------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@*:::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=%%%##############+.=#%########################%%#####################%%%%%##****+*++++++++++++++++++++++**###*#********++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%#######%%%%%%%%################%%###%*+++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################=::::::::::::::::...:+***++++                       .:+****************************=====+***************+=======-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::... ..:-::::--:---:-:--:.                                                    .                                ..................................................................:::::::::::::---------------::-------------------------------------------------------------============================----------------------======================================----------------:::::::::::::::----------------------------------::::::::::::::::--------------------:::-::::::::::::::::::-------:::::::::::::::::::::::::::::::::::----------------------------------------------------------------:::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==+++==--:::...........:::::::..................::::::::::..................................................::::::::::::::::::::::::::::::::::----==+++++******++==---::::::::::::::::::::::::------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::---===++++++++==---:::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::............::--==+++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************#**************************#######################################################################################################################################################################################################################################################################################################################################################################********************************+++++************############################***++=========================================================================
********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#+-::.......:::::----------------------------------------------------------------==================----:::-----=======----------------------------------------------------------------------------::::..................::::-----------------------------------------------------------------------------------------:=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+%%%##############=.+%%########################%######################%%%%%#******++++++++++++++++++++++**#####********+++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%###%%#%%%%%%%%################%%####%*+*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################+:::::::---:::::::.-+***++=++                       .-*****************************=====+***************+=======--------------------------------------------:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------:::::::-------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...   .::-:--:---::::----:.                                                  .                                ..................................................................:::::::::::::-----------:---::-------------------------------------------------------------============================---------------------======================================-----------------:::::::::::::::-----------------------------------::::::::::::::::-------------------:::::::::::::::::::::---------::::::::::::::::::::::::::::::::::----------------------------------------------------------------::::::::::::::::::::::::::---==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................::--==+++===--:::.......::::::::::..................::::::::::...............................................:::::::::::::::::::::::::::::::::::::----==+++++*******+==--:::::::::::::::::::::::::------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::---===++++++++===--::::---===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::............:::-==+++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################*################################***********************************+*************#############################***++=========================================================================
*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===+++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#+-::.......:::::---------------------------------------------------------------===================----:::----========----------------------------------------------------------------------------::::.................:::::-------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@*:::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-*%%%##############-:*%%########################%######################%%%%##*****++++++++++++++++++++++*#######*******++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################*####%%%%%%##################%%%###%#+*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*-:::::------:::::=****+++=++                       .-*****************************=====+****************=======--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::-------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::...     .:-:--::------:::-::.                                                .                               ...................................................................:::::::::::::---------------::-------------------------------------------------------------============================---------------------======================================-----------------:::::::::::::::-----------------------------------::::::::::::::::-------------------:::::::::::::::::::::---------::::::::::::::::::::::::::::::::::----------------------------------------------------------------::::::::::::::::::::::::::---==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................::--===++===---:::......:::::::::::.................::::::::::.............................................:::::::::::::::::::::::::::::::::::::::----==+++++*******++=---:::::::::::::::::::::::-------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::---===++++++++===--::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::............:::-==++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################*******************************************###################################**++=========================================================================
******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++===============================================================================+++++******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*=-::.......:::::---------------------------------------------------------------===================----:::----========----------------------------------------------------------------------------::::.................:::::------------------------------------------------------------------------------------------:-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+:::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%#%#############*:-#%%########################%#####################%%%%%#******+++++++++++++++++++++*########*******++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%#######################################%##*####%%%%%###################%%%###%%*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*-::-:---------::+#****++++++                       .=*****************************======+***************+======---------------------------------------:-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::....     ..::----::::::-::-:-:.                                              .                               ....................................................................::::::::::::---------------::-------------------------------------------------------------============================--------------------=======================================-----------------:::::::::::::::-----------------------------------::::::::::::::::------------------:::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::--------------------------------------------------------------:::::::::::::::::::::::::::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................::--===++====--:::::::::::::::::::::................::::::::::...........................................:::::::::::::::::::::::::::::::::::::::-----===+++++*******++==---::::::::::::::::::::---------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::---===++++++++===--:::---====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::............:::--==++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################*******************************************###################################**+++========================================================================
++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++================================================================================++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*=-::.......:::::---------------------------------------------------------------===================----:::----=========---------------------------------------------------------------------------::::.................:::::--------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=%%%##############*:+%%%#######################%%*####################%%%%##*****++++++++++++++++++++**########****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%#######################################%######%%%%%%###################%%%###%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*-::-----------=*#*#***++++++                       :+*****************************======+****************======---------------------------------------:------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::....       .::-:--:--::--::-:--:                                             ..                              ....................................................................::::::::::::-------------------------------------------------------------------------------============================-------------------======================================------------------:::::::::::::::------------------------------------:::::::::::::::-------------------:::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::--------------------------------------------------------------:::::::::::::::::::::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................:::-===++====----:::::::::::::::::::................:::::::::.........................................:::::::::::::::::::::::::::::::::::::::::------===+++++********+==---::::::::::::::::::-----------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::---===+++++++++==---::---===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::............:::--==++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################*****************************************####################################***++========================================================================
++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++================================================================================++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+=-::.......:::::---------------------------------------------------------------===================-----------=========--------------------------------------------------------------------------:::::.................:::::---------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::::::::::---::::::::::::::::::::::::...........................................:::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=%#%##############+:*%%########################%%*###################%%%%%#******+++++++++++++++++++*##########***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%#########################################*##%#%%%%%%###################%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*-::-----====+*###****+++++++                       :+*****************************=======****************+======---------------------------------------:------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::....         .:-::--::::--::-::--.                                           ..                             .....................................................................::::::::::::-------------------------------------------------------------------------------============================------------------======================================-------------------:::::::::::::::------------------------------------::::::::::::::---------------------:::::::::::::::--------------::::::::::::::::::::::::::::::::::::-------------------------------------------------------------::::::::::::::::::::::::::---==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................:::--===+======----:::::::::::::::::.................:::::::.......................................::::::::::::::::::::::::::::::::::::::::::::------===+++++********++=---::::::::::::::---------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::---===+++++++++==-------====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::............:::--==+++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################*****************************************####################################***++========================================================================
++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++******++++++++==============================================================================+++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+=-:::......:::::--------------------------------------------------------------====================-----------=========--------------------------------------------------------------------------:::::.................::::----------------------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::-----::::::::::::::::::::::::..........................................:::::::::::::::::::::::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+%%###############=-#%%########################%%*%##################%%%%##*****++++++++++++++++++**###########************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#########################################*####%%%%%%###################%%%%##%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*-:----====+**##******+++=+++                      .-******************************+======+***************+======-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::....           .:-:-::--:::-----::-.                                         ..                             .....................................................................::::::::::::--------------------------------------------------------------------------------===========================-----------------=======================================------------------::::::::::::::::-------------------------------------::::::::::::------------------------::::::::-------------------:::::::::::::::::::::::::::::::::::::------------------------------------------------------------::::::::::::::::::::::::::---==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................:::--===++=======----:::::::::::::::..................:::::.....................................::::::::::::::::::::::::::::::::::::::::::::::-------===+++++********++=---:::::::::::::---------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::---===+++++++++===------====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::............:::--==++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################****************************************######################################**++========================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++*******+++++++++++===========================================================================+++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+=-:::.....::::::--------------------------------------------------------------====================----------==========--------------------------------------------------------------------------:::::................:::::-----------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------::::::::::::::::::::::::..........................................::::::::::::::::::::::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*%%###############-=%%%#######################%%#*%##################%%%%#******+++++++++++++++++**############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%##############################################%%%%%####################%%%%###%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*=----==++**####****+++++++++                      .=******************************+======+****************+=====----------------------------------------:------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::..             .::---:-::---::---::::                                       ..                              ....................................................................::::::::::::--------------------------------------------------------------------------------===========================-----------------======================================-------------------::::::::::::::::---------------------------------------::::::::-----------------------------:::---------------------:::::::::::::::::::::::::::::::::::::------------------------------------------------------------::::::::::::::::::::::::::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................:::--===+++=======---:::::::::::::::........................................................::::::::::::::::::::::::::::::::::::::::::::::::--------==++++++********++==---:::::::::::----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::---===+++++++++===-----=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...........:::--==+++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################**************************************#######################################**++========================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++*******+++++++++++++=========================================================================+++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+=--:::....::::::--------------------------------------------------------------====================----------==========--------------------------------------------------------------------------:::::................:::::------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------::::::::::::::::::::::::..........................................:::::::::::::::::::::::::::::------====------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-##%%#############*-*%%%#######################%%#*%#################%%%%##******++++++++++++++++**############************++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#%%##########################################%###%%%%%####################%%%%###%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################+---=++***####******++++++++                      :+******************************+=======****************+=====-----------------------------------------:-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...              .:--:--:::----------::                                     ..                              .....................................................................:::::::::::--------------------------------------------------------------------------------============================----------------======================================-------------------::::::::::::::::---------------------------------------:::::::------------------------------------------------------:::::::::::::::::::::::::::::::::::::------------------------------------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................:::--===++++++=====---::::::::::::::.......................................................::::::::::::::::::::::::::::::::::::::::::::::::--------===++++++*********++=---::::::::::-----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::---===+++++++++====---======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...........:::--==+++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################*************************************########################################**++========================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++*******++++++++++++++++++====================================================================++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=--:::....::::::-------------------------------------------------------------=====================----------==========--------------------------------------------------------------------------:::::................::::-------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::.........................................::::::::::::::::::::::::::::::----=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-%#%#############%+-#%%%#######################%%**#################%%%%##*****+++++++++++++++++*#################*******++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#%%#########################################*#%###%%%%%####################%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################*--=+***#####******+++++++++                      -*******************************+=======+****************======----------------------------------------------:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::--------------::::::::::::::::::::::::::::::::::::::::::::::::...                 .:---::-----:--------:.                                  ..                              .....................................................................::::::::::::--------------------------------------------------------------------------------===========================---------------======================================-------------------::::::::::::::::----------------------------------------:-------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---------------:::::::::-----------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................:::---==++++++++====---:::::::::::::...................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::-------===++++++*****##**++==---::::::::::----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::---===++++++++++============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.........:::--==++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################*************************************#########################################**+++=======================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++******+++++++++++++++++++++++===============================================================+++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=--:::....:::::--------------------------------------------------------------=====================-----------========---------------------------------------------------------------------------:::::................::::--------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%#-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::.........................................:::::::::::::::::::::::::::::----===++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=%%###############==#%%%#######################%%=*%################%%%###***++++++++++++++++++*###############*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#%%#########################################*#####%%%%%####################%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*##==+***#####*******+++++++++                     .=*******************************+========****************+=====-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::--------------::::::::::::::::::::::::::::::::::::::::::::::...                   .::------------------:.                                ..                             ......................................................................::::::::::::--------------------------------------------------------------------------------===========================---------------======================================-------------------::::::::::::::::------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::----------:::::::::::::::----------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................:::---==+++++++++===---:::::::::::::................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------===++++++*****##***+==-----:::::::-----------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::---===++++++++++============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::........:::--==++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################*************************************#########################################**+++=======================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++==============================================+++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...:::::--------------------------------------------------------------=====================-----------========---------------------------------------------------------------------------:::::................::::--------------------------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------::::::::::::::::::::::.........................................:::::::::::::::::::::::::::::---===+++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+%################=*%%%%#######################%#-*%###############%%%###**+*+++++++++++++++++*################*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%###############################################%%%%%####################%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################++**#######*******+++++++++                     :+*******************************+========+****************=====-----------------------------------------------:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::-------------:::::::::::::::::::::::::::::::::::::::::::::...                     .:----::-------------:.                               .                   .      .........................................................................::::::::::::--------------------------------------------------------------------------------===========================--------------======================================--------------------::::::::::::::::-----------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::----------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................:::--==++++++++++===---:::::::::::::............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:------====+++++******###**++==------:::::-----------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::---===+++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::.......:::--==++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################***********************************##########################################***++=======================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...:::::--------------------------------------------------------------=====================------------=====-----------------------------------------------------------------------------::::.................::::---------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------::::::::::::::::::::::.........................................:::::::::::::::::::::::::::::---==+++***+++===----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*%#%##############=#%%%%######################%%#-################%%%###***+*++++++++++++++++*###############*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%#%%#########################################*######%%%%%#####################%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%***########*******+++++++++                    .-+*******************************+=========****************+====----------------------=--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::-------------:::::::::::::::::::::::::::::::::::::::::::...                      ..-::-----------------:.                             .                     ..............................................................................::::::::::::---------------------------------------------------------------------------------==========================--------------=====================================---------------------::::::::::::::::-----------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::----------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................:::--==++++++++++===---:::::::::::::..........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------===++++++******###***++==-----::::::----------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::---===++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++==--:::::::....:::--==++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################***********************************###########################################**++=======================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...:::::--------------------------------------------------------------=====================---------------------------------------------------------------------------------------------:::::................:::::----------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------::::::::::::::::::::::.........................................::::::::::::::::::::::::::::----==++******+++==----::::::::::::::::::::::::::::::::-----::::::::::::::::::::::#%##############%**%%%%#######################%%*-################%%%###***+++++++++++++++++*##############*****+++++++++++++++++++++++++++++++++++++++++++++++++++**##%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#%%#########################################*######%%%%%#####################%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%##########********++++++++=                    :=*********************************=========+***************+====----------------------=+------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::------------::::::::::::::::::::::::::::::::::::::::-::.                         .:--------------------::.                          . . .                ...............................................................................::::::::::::---------------------------------------------------------------------------------===========================-------------=====================================---------------------::::::::::::::::-----------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::----------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................::---==++++++++++===---:::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------===++++++******####**+++===-----::::----------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::---===+++++++++++++==========++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++==--:::::::...:::--==++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################*********************************###########################################**++=======================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::..:::::--------------------------------------------------------------=====================---------------------------------------------------------------------------------------------:::::................:::::---------------------------------------------------------------------------------------------------:+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%@@%@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------::::::::::::::::::::::.........................................::::::::::::::::::::::::::::----==++*******++===----::::::::::::::::::::::::::::----------:::::::::::::::::::-#%%#############%+#%%%%#######################%%+-###############%%%###*****+++++++++++++++*##############*****++++++++++++++++++++++++++++++++++++++++++++++++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#%%#########################################*######%%%%%#####################%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%#########*******+++++++++=                   .:+*********************************==========****************======---------------------+=------------------:----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::------------:::::::::::::::::::::::::::::::::::::::::..                          .::--------------------:.                        . . .         ......................................................................................::::::::::::----------------------------------------------------------------------------------==========================------------=====================================----------------------:::::::::::::::---------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................::--===+++++++++++===--:::::::::::::............::::....................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------===++++++******#####**+++===-----::::---------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::-------------------------:::::---===+++++++++++++++=========+++++++++++++++++++++++++++++++++++++++++++********************+++++++++++===---:::::...:::--==++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************##****************#####################################################################################################################################################################################################################################################################################################################################################################*********************************###########################################**+++======================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.::::::-------------------------------------------------------------=====================----------------------------------------------------------------------------------------------:::::................::::------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------::::::::::::::::::::::........................................:::::::::::::::::::::::::::::----==++***##***++===----::::::::::::::::::::::::::--------------::::::::::::::::=%#%##############*%%%%%#######################%%==#%#############%%%###*****++++++++++++++*#############****+++++++++++++++++++++++++++++++++++***++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%#%#########################################*######%%%%%########*#############%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################********+++++++++=                  .:-+*********************************==========+***************+===-=---------------------=+=-----------------------:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::------------:::::::::::::::::::::::::::::::::::::::::.                           .::--------------::-:--:..                    .. . ...      .......................................................................................::::::::::::::--------------------------------------------------------------------------------==========================-----------======================================----------------------:::::::::::::::---------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................::--===+++++++++++===--::::::::::::::..........::::::................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------===++++++******######***+++==-----::::--------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::------------------------:::::---===+++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++**********************+++**+++++++===--::::...:::--==+++++++++++******************************************************************************************************************************************************************************************************************************************************************************************************#####****************######################################################################################################################################################################################################################################################################################################################################################################********************************###########################################**+++======================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.::::::-------------------------------------------------------------=====================----------------------------------------------------------------------------------------------:::::................::::------------------------------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------::::::::::::::::::::::........................................:::::::::::::::::::::::::::::----==++**####***++==----:::::::::::::::::::::::::----------------:::::::::::::::+%##%#############*%%%%%#######################%#-+%#############%%%###*****++++++++++++++*#############****++++++++++++++++++++++++++++++++++++***+++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%#%#########################################*#####%%%%%%########*##########%##%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################********+++++++++=                  ::-**********************************===========****************===-=----------------------++------------------:-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::-----------::::::::::::::::::::::::::::::::::::::::::.                           .:------------------:--::.                  .. .. ................................................................................................::::::::::::::-------------------------------------------------------------------------------==========================-----------======================================----------------------:::::::::::::::---------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::::---==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................:::--===+++++++++++===--::::::::::::::.........::::::::.............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------===++++++******#######***+++==-----:::-:------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::------------------------:::::----==++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++********************************++++==---:::...:::--==++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************########****************######################################################################################################################################################################################################################################################################################################################################################################*******************************############################################**+++======================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.::::::-------------------------------------------------------------=====================----------------------------------------------------------------------------------------------:::::...............:::::-------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------::::::::::::::::::::::........................................:::::::::::::::::::::::::::::----==++**######**++==----:::::::::::::::::::::::-----=======------::::::::::::::*#%################%%%%#######################%%*-+%############%%%%##******+++++++++++++*############*****++++++++++++++++++++++++++++++++++++++*++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%#########################################*######%%%%%%########*##########%%##%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################********+++++++++=                 :::=**********************************+==========+***************+===-=---------------------=+=-----------------::----:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::----------::::::::::::::::::::::::::::::::::::::::--:.                           .::----------------::--::..            . ....  ................................................................................................::::::::::::::::------------------------------------------------:-----------------------------===========================----------=====================================-----------------------:::::::::::::::-------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::::---==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................:::--===+++++++++++===--::::::::::::::.........:::::::::.........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------==++++++++*****#########***++==----::::--------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::-----------------------::::::---===+++++++++++++++=========++++++++++++++++++++++++++++++++++++++++*********************************++++==--::::..:::--==++++++********************************************************************************************************************************************************************************************************************************************************************************************************########**************########################################################################################################################################################################################################################################################################################################################################################################********************************###########################################***++======================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..::::::-------------------------------------------------------------=====================----------------------------------------------------------------------------------------------::::................:::::------------------------------------------------------------------------------------------------------:=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::----------------------------::::::::::::::::::::::........................................::::::::::::::::::::::::::::::---==++***#####***++==----:::::::::::::::::::::-----==========----::::::::::::::#%%###############%%%%%#######################%%+-*%###########%%%%###******++++++++++++*###########*****+++++++++++++++++++++++++++++++++++++++**++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%#########################################*######%%%%%%########*#########%%%##%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#%%%%%%%%%%%%%%%%%%%%%%###############################################*********+++++++++-                .::-+**********************************+===========***************+====-----------------------=+------------------:----:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::---------::::::::::::::::::::::::::::::::::::::::::-:.                           .::-----------:------:---:.  ..  .. ..........................................................................................................::::::::::::::::------------------------------------------------------------------------------==========================---------=====================================------------------------:::::::::::::::-------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::::::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................:::--==++++++++++++===--::::::::::::::........:::----::::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------==++++++++*****##########***++==----:::--------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::-----------------------::::::---===++++++++++++++++========+++++++++++++++++++++++++++++++++++++++***********************************++++==-:::::.:::--==++++++********************************************************************************************************************************************************************************************************************************************************************************************************###########***********########################################################################################################################################################################################################################################################################################################################################################################********************************###########################################***++======================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..::::::-------------------------------------------------------------====================-----------------------------------------------------------------------------------------------::::................:::::-------------------------------------------------------------------------------------------------------:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------::::::::::::::::::::::........................................::::::::::::::::::::::::::::::----==++**######**+++==---::::::::::::::::::::----====+++++====----::::::::::::-#%################%%%%%#######################%%=-*%###########%%%%##*******++++++++++**###########****+++++++++++++++++++++++++++++++++++++*####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#################################################%%%%%%######*#**########%%%%*%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#=+##%%%%%%%%%%%%%%%%%%%%%%###############################################*********++++++++=-               .:::-+**********************************+===========+***************====-=----------------------++-----------------:-----:--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::----------:::::::::::::::::::::::::::::::::::::-:::-:::.                          .:::-------:---------::--:..  .  .. ....  ..................................................................................................:::::::::::::::::::---------------------------------------------------------------------------==========================---------=====================================------------------------:::::::::::::::-------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::::::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................:::--==++++++++++++===--:::::::::::::::......:::------:::::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------===+++++++*****###########***++=----:::---------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::---------------------:::::::---===++++++++++++++++========+++++++++++++++++++++++++++++++++++++++************************************+++==--::::.:::--==++++++*****************************************************************************************************************************************************************************************************************************************************************************************************#################*******##########################################################################################################################################################################################################################################################################################################################################################################*********##********************############################################**++======================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::...::::::------------------------------------------------------------====================------------------------------------------------------------------------------------------------::::................::::----------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------::::::::::::::::::::::........................................:::::::::::::::::::::::::::::::---===+***######**++===---::::::::::::::::::-----==+++++++++===----:::::::::::=%#################%%%%%#######################%#--#%##########%%%%##********++*++++++*###########*****++++++++++++++++++++++++++++++++++++*#%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################*#######%%%%%%#####**%**########%%%%##%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#===*%%%%%%%%%%%%%%%%%%%%%%%##############################################**********++++++++=:              .::::=***********************************+============***************+==-------------------------=+=-----------------:----:--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::----------:::::::::::::::::::::::::::::::::::::::::-:::.                    .     .:::--------------:-----:::.  .......  ....................................................................................................:::::::::::::::::::::------------------------------------------------------------------------==========================--------=====================================-------------------------:::::::::::::::-------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................:::-===++++++++++++==--:::::::::::::::::....::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------===++++++******############**++==---:::----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::---------------------:::::::---===++++++++++++++++=========+++++++++++++++++++++++++++++++++++++**************************************++==--::::.:::--=+++++++****************************************************************************************************************************************************************************************************************************************************************************************************######################**############################################################################################################################################################################################################################################################################################################################################################################********####******************############################################**++======================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::...::::::------------------------------------------------------------==================-------------------------------------------------------------------------------------------------:::::................::::----------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------::::::::::::::::::::::........................................:::::::::::::::::::::::::::::::----==++**#######**++==----:::::::::::::::::----==+++*****+++==-----::::::::::+%###############%%%%%%%######################%%*-=###########%%%%###********+++++++**#########******+++++++++++++++++++++++++++++++++++++#%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################*#######%%%%%%####***#**########%%%%#*%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+===*%%%%%%%%%%%%%%%%%%%%%%%##############################################*********+++++++++=.             .:----+***********************************+============+**************+====------------------------++-----------------:--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::::---------:::::::::::::::::::::::::::::::::-:::::::-::-:.                          ..:-------------:------::::.. ......... ..................................................................................................::::::::::::::::::::::-----------------------------------------------------------------------=========================--------====================================-------------------------:::::::::::::::--------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::::::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................:::--===++++++++++++==--::::::::::::::::::..::::--===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------===++++++******#############**++=----------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::---------------------:::::::---===+++++++++++++++++========++++++++++++++++++++++++++++++++++++***************************************+++=--::::.:::--=++++++*****************************************************************************************************************************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################################################################################################################################################################################******************############################################**+++=====================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::...::::::------------------------------------------------------------=================--------------------------------------------------------------------------------------------------:::::...............:::::-----------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------::::::::::::::::::::::........................................::::::::::::::::::::::::::::::::----==++**######***++==----:::::::::::::::----==+++*******+++==----::::::::::*###############%%%%%%%#######################%%+-+##########%%%%%##*********+++++**########********++++++++++++++++++++++++++++++++++++*##%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%%%%%%###***#**########%%%%%*#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*====+%%%%%%%%%%%%%%%%%%%%%%%#############################################**********+++++++++=.             :=++==+***********************************+=============***************+==-=-----------------------=+=-----------------:--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::::---------:::::::::::::::::::::::::::::::::-::::::--:--:.                .    .    ..::------------::::-:-:--::. ...........................................................................................................:::::::::::::::::::::::------------::::-----------------------------------------------------=========================--------====================================-------------------------:::::::::::::::--------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::::::::::::--==+++++++++++++++++++++++++++======++++++++++++++++++++++++=====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................:::--===++++++++++++==--:::::::-::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------===++++++******##############*++==----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::--------------------::::::::---===+++++++++++++++++=========++++++++++++++++++++++++++++++++++****************************************+++=--::::::::-==++++++***************************************************************************************************************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################################################################################***************#############################################**+++=====================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..::::::------------------------------------------------------------================---------------------------------------------------------------------------------------------------:::::...............:::::-----------------------------------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@#-:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------::::::::::::::::::::::.......................................:::::::::::::::::::::::::::::::::----==++***######***++==----::::::::::::::----==++***###***++==----:::::::::-################%%%%%%%#######################%%--+%#########%%%%###*********+++**#######********++++++++++++++++++++++++++++++++******##%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%############################################%%%%%%%%%%##****#*+#######%%%%%%**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#======#%%%%%%%%%%%%%%%%%%%%%%#############################################**********+++++++++=             -=+=+++************************************+=============+**************+==-=------------------------++=-------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::---------:::::::::::::::::::::::::::::::::::::::::----:.                     .    ..:::---:-----------:--::-::..    ......................................................................................................::::::::::::::::::::::::---------:::::::----------------------------------------------------========================-------====================================--------------------------:::::::::::::::--------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::::::::::::---==++++++++++++++++++++++++==========+++++++++++++++++++++=====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................:::--===++++++++++++==--::::::----:::::::::::::--=====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------===++++++******##############**+==----------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::--------------------::::::::---===+++++++++++++++++=========++++++++++++++++++++++++++++++++******************************************+++=--::::::::-==++++++*************************************************************************************************************************************************************************************************************************************************************************************************###########################################################################################################################################################################################################################################################################################################################################################################################################################**********#############################################***++=====================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..::::::------------------------------------------------------------===============-------:--------------------------------------------------------------------------------------------:::::...............:::::------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%@@@@#-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::----------------------------::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::----==++***######**++==----::::::::::::::---==++***#####***+==----:::::::::-#%##############%%%%%%%#######################%#--+%########%%%%####************#######***********+++++++++++++++++++++++++****######%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%######################################*###%%%%%%%%%%%%##****#*+#######%%%%%%#*####%%%%%%%%%%%%%%%%%%%%%%%%%%%%#=======*%%%%%%%%%%%%%%%%%%%%%%#############################################**********+++++++++=           .-==+++++************************************+=============+***************+==-------------------------=*=-----------------:-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::--------:::::::::::::::::::::::::::::::--::::::::::---:.                 ..    .  ..::-----------::--------:-:...  ......................................................................................................:::::::::::::::::::::::::------::::::::::--------------------------------------------------=========================------====================================--------------------------:::::::::::::::--------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::::::--==+++++++++++++++++++++++=============+++++++++++++++++======---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................:::--===++++++++++++==---::::------::::::::::::--======--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------===++++++******##############**++=-----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::-------------------:::::::::---===+++++++++++++++++=========+++++++++++++++++++++++++++++++********************************************++=--:::::::--==+++++************************************************************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################################################################################################**********#############################################***++=====================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..:::::-------------------------------------------------------------==============------::::-------------------------------------------------------------------------------------------::::................::::-------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@*-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------:::::::::::::::::::::::.......................................:::::::::::::::::::::::::::::::::::----==++**#######**++==----::::::::::::----==+***#######**++==---:::::::::+#%%#############%%%%%%#######################%%*:-*%########%%%#####***********#######*********+++++++++++++++++++++++++*****######%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################*##%%%%%%%%%%%%#%#***#%*+######%%%%%%%%**####%%%%%%%%%%%%%%%%%%%%%%%%%%%*=======*%%%%%%%%%%%%%%%%%%%%##############################################***********+++++++++=          :===+=++++************************************+==============***************+===-------------------------++=-----------------:---::-:--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::--------:::::::::::::::::::::::::::::::::::::::::::::--:.             .   .....     ..:-----------:-----::::--::.. .......    ............................................................................................:::::::::::::::::::::::::::::::::::::::::------------------------------------------------=========================-----====================================---------------------------:::::::::::::::--------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::::::--==++++++++++++++++++++++===-----======+++++++++++++++=======---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................:::--==+++++++++++++==---:::--------::::::::::--=======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------===++++++******##############**++==----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::------------------::::::::::---===+++++++++++++++++==========++++++++++++++++++++++++++++++*******************************************+++=--:::::::--==++++*+**********************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################********#############################################**++=====================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.:::::-------------------------------------------------------------==============-----::::::------------------------------------------------------------------------------------------::::................::::--------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%+-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::........................................:::::::::::::::::::::::::::::::::::----==++***######***++==---::::::::::::---==++**########**++==---:::::::::*%###############%%%%%%########################%=:=#%#######%%%%######********########*********++++++++++++++++++++++++*****#######%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%##%%%%%%%%#***#%*+######%%%%%%%%**####*#%%%%%%%%%%%%%%%%%%%%%%%%%#=======#%%%%%%%%%%%%%%%%%%%%##############################################***********+++++++++=         :=====+++++************************************+==============+**************+=-=--------==---------------=++-----------------:----:--:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::::-------:::::::--------::::::::::::::::::::::::::::::::::::::::----:--:..     . .    .. .....   .  ..::----:-----------:-::--::..     .....  .. ........................................................................................:::::::::::::::::::::::::::::::::::::::::------------------------------------------------========================-----====================================---------------------------:::::::::::::::-------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::::::--==++++++++++++++++++++++==-------======++++++++++++++=====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................:::--==++++++++++++===----:----=----::::::::::--=======--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------==++++++******###############**+==----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::------------------:::::::::::---===+++++++++++++++++==========++++++++++++++++++++++++++++++********************************************++=--:::::::--=++++*************************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################*****################################################**++=====================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.:::::-------------------------------------------------------------==============----:::::::------------------------------------------------------------------------------------------::::................::::---------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------:::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::-----==++***######**++==----::::::::::----==++**########**++==---:::::::::#%##############%%%%%%%#######################%%--=#########%@%#######******#######***********++++++++++++++++++++++++****####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%##%%%%%%%%#***#%*+*#####%%%%%%@%#*####++%%%%%%%%%%%%%%%%%%%%%%%%%%*=====*%%%%%%%%%%%%%%%%%%%%%##############################################***********+++++++++-        -=====+++++*************************************+==============+***************+===-------=+----------------=+=----------------:----:--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.  ::::::::::::::::::::::-------:::::::--------::::::::::::::::::::::::::::::::::::::--:--:----::. .  .   ..   ........  .  ...::---------:::-----:----::. .....  ... ...........................................................................................:::::::::::::::::::::::::::::::::::::::::----------------------------------------------========================-----===================================----------------------------:::::::::::::::-------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------::::::::::::::::::::::::::::---==++++++++++++++++++++==---------=====+++++++++++++=====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................::--===++++++++++++====------=====---:::::::::--==++===--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------==++++++*******##############**+==----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::------------------::::::::::::---===+++++++++++++++++==========+++++++++++++++++++++++++++++*********************************************++=--:::::::-==++++*************************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################*****################################################**+++====================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.:::::-------------------------------------------------------------=============----:::::::::----------------------------------------------------------------------------------------:::::...............:::::---------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::----==++**#######**++==----:::::::::----==+**#########**++==---:::::::::################%%%%%%%#######################%#:-=########%%%#########*###%######************++++++++++++++++++++++****###%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%#%#*#%%%%%###%%%%%%%#****#%*+*#####%%%%%%%%#**###+=+%%%%%%%%%%%%%%%%%%%%%%%%%#====+%%%%%%%%%%%%%%%%%%%%%###############################################***********+++++++=+.       -=======++++*************************************+===============***************+===-------=+=----------------++-----------------:-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   .::::::::::::::::::::::------::::::::--------::::::::::::::::::::::::::::::::::::---::--::---::.   .      ..............  ...::------------:::::::--:::.   ....................................................................................................:::::::::::::::::::::::::::::::::::::::------------------------------------------------======================----===================================-----------------------------:::::::::::::::------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------:::::::::::::::::::::::::::::--==++++++++++++++++++++==---::::---====++++++++++++=====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................::--===++++++++++++====-----======---:::::::::--==+++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------==++++++*******##############**+==----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::---===+++++++++++++++++==========++++++++++++++++++++++++**************************************************++=--::::::--==+++**************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################################################################################**#################################################***++====================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.:::::-------------------------------------------------------------=============----:::::::::----------------------------------------------------------------------------------------:::::...............:::::----------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------:::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::----==++***######***++==----::::::::---==++**#########**++==---:::::::::##%#############%%%%%%%%%#####################%*:-+%%#####%%%%#########%%%%%#####************++++++++++++++++++++++***####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%#*#%%%%####%%%%%%%#****#%*+*####%%%%%%%%%#**###+==+%%%%%%%%%%%%%%%%%%%%%%%%%*===#%%%%%%%%%%%%%%%%%%%%%##############################################************+++++++++       ======+=++++***************************************===============+***************+==--------++----------------=*=----------------:----::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    .:::::::::::::::::::::-------:::::::--------::::::::::::::::::::::::::::::::::-----------:----:.   .. .............  ..... ..::----::-----::---::::::::..  ....................................................................................................:::::::::::::::::::::::::::::::::::::-------------------------------------------------=-=-=================----===================================-----------------------------:::::::::::::::------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------:::::::::::::::::::::::::::::--===++++++++++++++++++==---::::::---===++++++++++++====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................::--===+++++++++++++====--=========--::::::::---=++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------==++++++*******##############**++=----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::---===+++++++++++++++++===========++++++++++++++++++++++++*************************************************++=--::::::--==+++***************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++====================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-::::::::::-------------------------------------------------------------=============----:::::::::----------------------------------------------------------------------------------------:::::...............::::-----------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------:::::::::::::::::::::::::::.......................................:::::::::::::::::::::::::::::::::::::::----==++**#######**++===---:::::::----==++**#########**++==---:::::::::##%#############%%%%%%%%%#####################%=:=*%%#####%@%########%%%%%#####*************++++++++++++++++++++++**####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%##%%%%#####%%%%%%%#****#%*+*####%%%%%%%%%%#*###+===*%%%%%%%%%%%%%%%%%%%%%%%%#==+#%%%%%%%%%%%%%%%%%%%%%##############################################************+++++++++      ====+===+++++***************************************===============+***************+==--------=*=----------------++=--------------------::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-===-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::    .:::::::::::::::::::::-------::::::::-------:::::::::::::::::::::::::::::::::---:-------------::..  .  ......... ..........  .::::--::-----::::-:--:--::.. .. ..................................................................................................:::::::::::::::::::::::::::::::::::--------------------------------------------------==-==================---==================================------------------------------:::::::::::::::-----------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------:::::::::::::::::::::::::::::---==++++++++++++++++++==--:::::::---====+++++++++++====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................:::--===+++++++++++++===============--::::::::--==++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------==+++++++******##############**++==---------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::---===+++++++++++++++++===========++++++++++++++++++++++++*************************************************++==-::::::--=+++****************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**++====================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-::::::::::-------------------------------------------------------------=============---::::::::::----------------------------------------------------------------------------------------:::::...............::::------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:::--------:::::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::----==++**#######**++==----::::::---==++**##########**+==----:::::::::################%%%%%%%%#####################%%--=#%%####%%%#######%%%%######**************++++++++++++++++++++++**###%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%#*#%%%#######%%%%%%#****#%*+*####%%%%%%%%%%#*###+===+%%%%%%%%%%%%%%%%%%%%%%%%%*=#%%%#%%%%%%%%%%%%%%%%%%##############################################************++++++++=    .======+++++++****************************************==============+*****************===--------*+----------------=*=--------------------::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-===-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    .::::::::::::::::::::::-------:::::::-------::::::::::::::::::::::::::::::::-----:-------::----:.. ..............  ... ..    ...::---::-:::::::::::::--:::........................................................................................................:::::::::::::::::::::::::::::::---------------------------------------------------=----================--==================================------------------------------::::::::::::::::-----------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------::::::::::::::::::::::::::::::--===++++++++++++++++==---::::::::--====+++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................:::--===+++++++++++++==========+====--::::::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------==+++++++******###############**+==---------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---===+++++++++++++++++===========+++++++++++++++++++++++**************************************************++==-:::::--==++******************************************************************************************************************************************************************************************************************************************************************************************************#########***************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################**+++===================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-::::::::::--------------------------------------------------------------===========----::::::::::----------------------------------------------------------------------------------------::::................::::------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@#-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::----===+***######***+===----::::----==++**##########**+==----:::::::::#%##############%%%%%%%%#####################%#:-=#%%%###%%######%%%%#######**************+++++++++++++++++++++++*#%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%#*#%%%#######%%%%%%#****##*+*####%%%%%%%%%%#**##+===*%%%%%%%%%%%%%%%%%%%%%%%%%#+%%%%%%%%%%%%%%%%%#%%%%%##################################++*########*************++++++++=   .=+====++=+++++****************************************==============+*****************+==--------+*=----------------++-----------------:--:-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.    .::::::::::::::::::::::-----:::::::::-------::::::::::::::::::::::::::::::---:--:----:---::----:.  . ........ ... ......... .....::-::----:--:::-::::::-::.......................................................................................................::::::::::::::::::::::::::::::---------------------------------------------------=------==============--=================================-------------------------------::::::::::::::::----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------:::::::::::::::::::::::::::::::--==++++++++++++++++==--:::::::::--====++++++++++=====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................:::--===+++++++++++++========++++===--::::::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------==+++++++******###############**+==---------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------===============-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::---===+++++++++++++++++===========++++++++++++++++++++++***************************************************++==--::::--=+++*******************************************************************************************************************************************************************************************************************************************************************************************************####********************#############################################################################################################################################################################################################################################################################################################################################################################################################*##############################################**+++===================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::::::--------------------------------------------------------------===========----::::::::::----------------------------------------------------------------------------------------::::...............:::::-------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::::----==++**#######**++==-----:::---===+***#########***+==---:::::::::-################%%%%%%%######################%*:-+#%%###%%%#####%%%#######*****************++++++++++++++++++++**#%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%#########%##########%%%%%%%#*%%%%**###%#%%%%%#*****##*+*###%%%%%%%%%%%#**##*===#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################=-==########*************++++++++.  :===+++++++++++*****************************************+=============+******************==--=-----=*=----------------=+----------------------:----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..  .::::::::::::::::::::::-------::::::::-----:::::--::::::::::::::::::::::::::-------------------::. ..  .  ...... ........... .....:::--::::::::::-::-:::-::.......................................................................................................:::::::::::::::::::::::::::-----------==----------------------------------------=-------===============================================-------------------------------::::::::::::::::---------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------::::::::::::::::::::::::::::::::--===++++++++++++++==---:::::::::--====+++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................:::--===++++++++++++++======++++====--::::::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===+++++++******###############**+==--------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::--------------------------------------=====================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::---===+++++++++++++++++===========+++++++++++++++++++++++**************************************************++==--:::--==++******************************************************************************************************************************************************************************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################################################################################################*####################################################################**+++===================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::::::--------------------------------------------------------------===========---::::::::::-----------------------------------------------------------------------------------------::::...............:::::-------------------------------------------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::::----===+***######***++==------:---==++**##########**++==---:::::::::-###############%%%%%%%%######################%+:-*%##%##%%####%%%%######******************+++++++++++++++******##%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%#########%#########%%%%%%%%*#%%%#**#####%%%%%#****###*+*###%%%%%%%%%%%%**##*+==#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*=-=-=########*************++++++++ .=+==++++++==++++*****************************************+=============+******************+=--------=++----------------=+----------------------:-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--======-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::::::::::::::::-------:::::::::-----:--::::::::::::::::::::::::::::----------------::---:.  .. ..  ...................  ...:::----:::::::--:--::::::.......................................................................................................::::::::::::::::::::::::-----------===--------------------------------------------------============================================--------------------------------::::::::::::::::--------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------::::::::::::::::::::::::::::::::---==+++++++++++++===--::::::::::--====+++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................:::--===++++++++++++++++===+++++====--::::::::--==++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::-::---------------------------------===+++++++******###############**+===-------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::------------------------------------=========================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::---===++++++++++++++++++==========++++++++++++++++++++++***************************************************++==--:::--=+++*****************************************************************************************************************************************************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################################################################################################################**#############################################################################################################***++===================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::::::--------------------------------------------------------------==========----::::::::::-----------------------------------------------------------------------------------------::::...............:::::--------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................:::::::::::::::::::::::::::::::::::::::::::----==++***######***++==---------==++**##########**++==---:::::::::-%##############%%%%%%%######################%%-:-###%##%%####%%%%#####******************+++++++++++++++***####%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%#################%%%%%%%%%#*#%%##**#####%%%%%#****###*+*###%%%%%%%%%%%%**###*++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%########=-====#######**************++++++++=+++++++++++++++++*****************************************+=============+******************+=-=-------++=----------------=------------------:---::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::::::::::::::::::-------::::::::--------::-:::::::::::::::::::::::::::----------------::--::.  .  ............................::::-:-:::-::::--:::::--::.......................................................................................................::::::::::::::::::::------------===-----------------------------------:----------------=========================================---------------------------------::::::::::::::::--------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------:::::::::::::::::::::::::::::::::---==++++++++++++==---::::::::::--===++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................:::--===++++++++++++++++++++++++===---::::::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::--::---------------------------------===+++++++******###############**++==------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::----------------------------------=======+++++++++++++++=======--------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::---===++++++++++++++++++==========++++++++++++++++++++++***************************************************+++=---:--==++**********************************************************************************************************************************************************************************************************************************************************************************************************######*************#################################################################################################################################################################################################################################################################################################################################################**##############################################################################################################**++===================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::::::---------------------------------------------------------------========-----:::::::::------------------------------------------------------------------------------------------::::...............::::---------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@#-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::::::----==++**#######**++==--------===+**###########**++==---:::::::::=%##############%%%%%%%######################%%:-=##%%#%%###%%@%#####*******************++++++++++++++**#####%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%#*#%###**#####%%%%#*****###++*##%%%%%%%%%%%%%#**#%#=*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%#######+-===-=######***************+++++++*+++=+++++++++++++******************************************+==============+******************=-=-------+*=-----------------------------------:---::-----:::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::-========-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::::::::::::::::::::------::::::-:--=------:-:::::::::::::::::::::::::::-------------::::::--::.  . ...   .................... ...:::---::::-:::---:::::-::.......................................................................................................::::::::::::::::::--------------------------------------------------::-----------------=======================================---------------------------------::::::::::::::::--------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------::::::::::::::::::::::::::::::::::--===++++++++++===--::::::::::---===++++++++++++====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................:::--===++++++++++++++++++++++++===---::::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===+++++++******###############**++==------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::--------------------------------=======++++++++++++++++++++======-----------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::----==++++++++++++++++++==========++++++++++++++++++++++****************************************************++=------==++*********************************************************************************************************************************************************************************************************************************************************************************************************########**********###############################################################################################################################################################################################################################################################################################################################################**********##########################################################################################################**+++==================================================================
+++++++++++++++++++++++++++++++++++++++++++++++***********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::::::----------------------------------------------------------------=======-----:::::::::------------------------------------------------------------------------------------------::::...............::::----------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................:::::::::::::::::::::::::::::::::::::::::::::----==++***######***++==-------==++**##########***+==----:::::::::+%##############%%%%%%%######################%*:-+####%%%##%@%%#####******************++++++++++++++**#####%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*##%%%%%%%%%%%#**###**######%%%%#*****##*++*##%%%%%%%%%%%%%#**#%#+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%#######====-=+######***************++++++*+++=++++++++++++++*******************************************==============+******************+=--------=*+-----------------------------------:---::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=========-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::-::--=------::::::::::::::::::::::::::::----:--------::---:::-:::. . ..... .........................:::::--:::::-:::-::::::::.......................................................................................................:::::::::::::::-----------------------::----------------------------:---------------------=================================----------------------------------::::::::::::::::--------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------::::::::::::::::::::::::::::::::::---==++++++++++==--:::::::::::---===+++++++++++++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................:::--===++++++++++++++++++++++++====--::::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===+++++++******###############**++==------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::-------------------------------=====+++++++++++++++++++++++++=====--------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::----==++++++++++++++++++=========+++++++++++++++++++++++****************************************************++==----==++**********************************************************************************************************************************************************************************************************************************************************************************************************########********###############################################################################################################################################################################################################################################################################################################################################**************########################################################################################################**+++==================================================================
+++++++++++++++++++++++++++++++++++++++++++++***************************************++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=--:::::::::------------------------------------------------------------------==-------::::::::::-----------------------------------------------------------------------------------------:::::...............::::----------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................::::::::::::::::::::::::::::::::::::::::::::::----==++**#######***++==------==++**##########**++==---::::::::::*%%#############%%%%%%#######################%+:-*###%%%#%%@%%####******************++++++++++++++***####%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%#***#****######%%%%#***+*##*++*#%%%%%%%%%%%%%%#**#%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################+=====+######***************++++++*+=+++++++++++++++********************************************+========+=+===*******************==-------=++--------------------------------------:-:-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::==========-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::::::-==------::::::::::::::::::::::::::----:----------:::--::::-::.  ................................::::::--::::::::-::::::-:... ...................................................................................................:::::::::::::-----------------------:::::-------------------------:----------------------===============================-----------------------------------::::::::::::::::--------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------:::::::::::::::::::::::::::::::::::---==++++++++==---:::::::::::---===+++++++++++++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................:::--===++++++++++++++++++++++++====--::::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===+++++++******###############**++==------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::------------------------------====++++++++*************++++++++====----------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::----==++++++++++++++++++=========++++++++++++++++++++++*****************************************************++==----==++*******************************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################****************#######################################################################################################***++==================================================================
++++++++++++++++++++++++++++++++++++++++++****************************************++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=--:::::::::---------------------------------------------------------------------------::::::::::-----------------------------------------------------------------------------------------:::::...............::::-----------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%@@=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..::::::::::......................................::::::::::::::::::::::::::::::::::::::::::::::-----=++***#######**++===-----==+**###########**++==---::::::::::#%%#############%%%%%%######################%%-:-###%%%%%%%%#####******************+++++++++++++***####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%###*#*******#######%#****+*##*++##%%%%%%%%%%@%%%#**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################+=-=--*#####****************+++++++++++=++++++++++++*********************************************+===+=====+=+=+******************+=-------=++=-------------------------------------:-:-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-===========-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::-==------::::::::::::::::::::::::--------------:--::--:-:-::::... .................................::-:::::---::::::::::::::......................................................................................................:::::::::::---------------------:::::::::-----------------------:------------------------============================-----------------------------------:::::::::::::::::-------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------:::::::::::::::::::::::::::::::::::::--===++++++===--::::::::::::---===+++++++++++++====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................:::--===+++++++++++++++++++++++++===--::::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------===+++++++******###############**++==------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::------------------------------====++++++*******************++++++=====-------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::---==+++++++++++++++++++========++++++++++++++++++++++*****************************************************++==---==++********************************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################*******+++*******######################################################################################################***++==================================================================
+++++++++++++++++++++++++++++++++++++++++***************************************+++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++==-:::::::::---------------------------------------------------------------------------:::::::::------------------------------------------------------------------------------------------:::::..............::::------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::::::.......................................:::::::::::::::::::::::::::::::::::::::::::::::----==++**#######***++==----==++**###########**++==---::::::::::#%%#############%%%%%#######################%%::-#%#%%%%@%%#####*****************+++++++++++++++*#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%#####**#*******###*#####**+++*##*++##%%%%%%%%%%@%%%#***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################+-==-=######*****************++++++++=++++++++++++++*********************************************+===+==+=++=+=+******************+=-=-----=++=-------------------------------------:---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-============::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::--==------:::::::::::::::::::::::-------------------:::--::---:......................................:::--:::::-::::::::::::::....................................................................................................:::::::::::--------------------::::::::::-----------------------::------------------------=--========================-----------------------------------:::::::::::::::::------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------:::::::::::::::::::::::::::::::::::::---===++++===---::::::::::::---===+++++++++++++====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................:::-====+++++++++++++++++++++++++===--::::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------===+++++++******###############**++==-----------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::-----------------------------====+++++***********************+++++====------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::---==+++++++++++++++++++========++++++++++++++++++++++*****************************************************++===-===++*******************************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################*****++++++*******######################################################################################################**++==================================================================
++++++++++++++++++++++++++++++++++++++++**************************************+++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++==--::::::::--------------------------------------------------------------------------::::::::::------------------------------------------------------------------------------------------:::::..............::::-------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@#-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::::::::.......................................::::::::::::::::::::::::::::::::::::::::::::::::----==++**#######***++===--==++**###########**++==---:::::::::-%%%############%%%%%%#######################%%-:=%#%%%%%%######*****************++++++++++++++++####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%##############%############%%%%%%#######**#********##*#####*++++*##*++##%%%%%@%%%%%%%%#***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################+==-=######******************++++++++++++++++++++++***********************************************+===++++++++==*******************+=-------+++------------------------------------:-:-:-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-============-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::-===------:-::::::::--:::::::-----------------------::::::::-:.  ....................................::::::::--::::::::::::::::..................................................................................................:::::::::::-----------------:::::::::::::---------------------:-:------------------------------===================-------------------------------------:::::::::::::::::----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------::::::::::::::::::::::::::::::::::::::---==++++==---:::::::::::::--====+++++++++++++====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................:::--====+++++++++++++++++++++++++===---:::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::-----:---------------------------------===+++++++******###############**++==------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::----------------------------====++++***************************++++=====---------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::----==++++++++++++++++++++=======++++++++++++++++++++*******************************************************++======+++*******************************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################****+++++++++****#######################################################################################################**++==================================================================
++++++++++++++++++++++++++++++++++++++***************************************++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++==--::::::::--------------------------------------------------------------------------::::::::::------------------------------------------------------------------------------------------:::::..............::::-------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::::::.......................................::::::::::::::::::::::::::::::::::::::::::::::::----==++***#######**++=======++**###########**+==----:::::::::=%%#############%%%%%%######################%%%--+%%%%%%%#####******************++++++++++++++++*##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%###########%%%%%%#######*****+++****##*####*+++++*##+++*#%%%%%%%%%%%%%%#***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################+--=#######*****************+++++++++++++++++++++++***********************************************+=++++++++++==+******************+==------=++--------------------------------------:-:--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=============-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::-:-===-==---::::::::::::----::-----------------------:-::::::--:..  ....................................::::::::::::::::::::::::::................................................................................................::::::::::::--------------::::::::::::::::--------------------:::-------------------------------=================--------------------------------------:::::::::::::::::----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::-----------------:::::::::::::::::::::::::::::::::::::::--===++===--::::::::::::::--====++++++++++++++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................:::............:::--====+++++++++++++++++++++++++===---:::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------===+++++++******###############**++==------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::---------------------------====++++*****************************++++====-----------------------------------------------------------------:::::-----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::----==++++++++++++++++++++=======++++++++++++++++++++*******************************************************++======++*******************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################***++++++++++*****######################################################################################################**+++=================================================================
++++++++++++++++++++++++++++++++++++***************************************++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++==---::::::--------------------------------------------------------------------------:::::::::::------------------------------------------------------------------------------------------::::...............::::--------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::::::......................................::::::::::::::::::::::::::::::::::::::::::::::::::----==++**########**++=====++***##########**++==---::::::::::*%%#############%%%%%%####################%#%%%*-#%%%%%######*****************++++++++++++++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#####################%%%%%#########*****++++***#**####*+++++*#*++**#%%%%@%%%@%%%%%#***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################+-+########******************+++++++++++++++++++++*************************************************++++++++++++=+******************+=-------=++=-------------------------------------:::--------:::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==============--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::-::-======------::::::::::::-------------------:::---:---::::::-::...  ....................................:::--:::::::::::::::::::::.............................................................................................:::::::::::::::---------:::::::::::::::::::------------------::::-----------------------------------============---------------------------------------:::::::::::::::::----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::---======---::::::::::::::--====++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................:::::::.........::::--====+++++++++++++++++++++++++====--:::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------===+++++++******###############**++==-------------------------------------------------------======---------------------------::::::::::::::::::::::::::::::::::::::::::::---------------------------===++++*******************************+++++===------------------------------------------------------------::::::::::----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==++++++++++++++++++++=======++++++++++++++++++++*******************************************************+++====+++*******************************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################****+++=====+++****######################################################################################################**+++=================================================================
++++++++++++++++++++++++++++++++++**************************************+++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*********+++==--::::::--------------------------------------------------------------------------::::::::::-------------------------------------------------------------------------------------------::::..............:::::--------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::::.......................................::::::::::::::::::::::::::::::::::::::::::::::::::----==++***#######***++====++**###########**++==---::::::::::#%%#############%%%%%###################%%%%%%%#=#%%%%#####******************+++++++++++++++++++%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%##########******+++++**#**####++++++##*++***%%%%@%@%@%%%%%##**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*+#########******************+++++++++++++++++++++*************************************************+++++++++++++=******************++=------=+*=------------------------------------::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-===============--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::-::=====--------:::-::::::------------------::::---:-----:::--:--:::.......................................::::--::::::::::::::::::::............................................................................................:::::::::::::::::::::::::::::::::::::::::::-----------------:::::----------------------------------==========-----------------------------------------:::::::::::::::::---------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====---:::::::::::::::--====++++++++++++++====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................::::::::::.....::::::--===++++++++++++++++++++++++++====--:::::::--==++++==---:::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------===+++++++******###############**++==---------------------------------------------------==============----------------------:::::::::::::::::::::::::::::::::::::::::::::--------------------------===++++**********************************+++====-----------------------------------------------------:::::::::::::::::---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==++++++++++++++++++++=======+++++++++++++++++++********************************************************+++===+++********************************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################****++======+++****######################################################################################################***++=================================================================
+++++++++++++++++++++++++++++++++*************************************+++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#*********+++==---::::---------------------------------------------------------------------------::::::::::-------------------------------------------------------------------------------------------::::..............:::::---------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@#-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......:::::......................................:::::::::::::::::::::::::::::::::::::::::::::::::::-----==++**########***+++++++**###########**++==---:::::::::-%%##############%%%%%########################%#**#%%%###*#******************+++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%##########******++++++**#*+###*+++++*##*++*#*#%%%@%@@@%%%%%##**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################*******************++++++++++++++++++++***************************************************++++++++++++=+******************+===----=+*=------------------------------------:-:::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=================-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::-===-----------:::----::----------------:::::--:-------:::--:::--:::......................................:::::-::::::::::::::::::::.........................................................................................::::::::::::::::::::::::::::::::::::::::::::----------------:::::-------------------------------------=====-------------------------------------------::::::::::::::::----------------------------------------------------------------------------------:::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===----:::::::::::::::---===++++++++++++++====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................::::::::::::::::::::::--===++++++++++++++++++++++++++====---::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------===+++++++******###############**++==------------------------------------------------====================-------------------:::::::::::::::::::::::::::::::::::::::::::::-------------------------===++++************************************+++===--------------------------------------------------::::::::::::::::::::---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---===+++++++++++++++++++=======+++++++++++++++++++*********************************************************+++==+++*******************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################***+++=======++*****#####################################################################################################***++=================================================================
++++++++++++++++++++++++++++++++*************************************+++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#*********++++==----:---------------------------------------------------------------------------:::::::::::-------------------------------------------------------------------------------------------::::..............::::----------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........:::.......................................::::::::::::::::::::::::::::::::::::::::::::::::::::----==++***#######***++++++***##########***+==----:::::::::=%%##############%%%%%###################********#%%####**#***************++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%###########******++++++****+###*+++++*##+++##*#%%%@%%@@%%%%%%#**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################********************++++++++++++++++++***************************************************++++++++++++=+*******************+=-----=+*+------------------------------------:-:::----------::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=================-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::-:::::-====------------:::--:----------------::::--::-------:--::--:::::-:::::...................................::::--:::::::::::::::::::::......................................................................................:::::::::::::::::::::::::::::::::::::::::::::---------------:::::-------------------------------------------------------------------------------------::::::::::::::::---------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=----::::::::::::::::---===++++++++++++++====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................:::------::::::::::::::--===++++++++++++++++++++++++++====---::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------===+++++++******###############**++==-----------------------------------------------======================------------------:::::::::::::::::::::::::::::::::::::::::::::------------------------====+++*************************************++++===-----------------------------------------------::::::::::::::::::::::---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---===++++++++++++++++++++======+++++++++++++++++++*********************************************************++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################***++========+++****#####################################################################################################***++===============================================================++
+++++++++++++++++++++++++++++++************************************+++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#*********++++==--------------------------------------------------------------------------------:::::::::::-------------------------------------------------------------------------------------------::::..............::::-----------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::----==++**########****+++****##########**++==----:::::::::*%%##############%%%%%################*********##%%####*##****************++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%###########*******++++++*#*+**#*++++++*#*+++#%**%%%%@%@@%%%%%%#***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################*******************++++++++++++++++++*****************************************************++++++++++++=*******************+=-----=+++------------------------------------:--:::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::-==================-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::-:::::-===--------------::--------------------::--:::::-----:--::-----::::::----::................................::::::::::::::::::::::::::::....................................................................................::::::::::::::::::::::::::::::::::::::::::::---------------:::::-------------------------------------------------------------------------------------::::::::::::::::---------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::---===++++++++++++++====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................::::--------:::::::::::::--===++++++++++++++++++++++++++====---::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------===+++++++******################*++==---------------------------------------------======+++++++++++++=======----------------:::::::::::::::::::::::::::::::::::::::::::::------------------------===+++***************************************+++====----------------------------------====-------:::::::::::::::::::::::---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---===++++++++++++++++++++======+++++++++++++++++++*********************************************************+++++++*******************************************************************************************************************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################################***++========+++****######################################################################################################**++==============================================================+++
++++++++++++++++++++++++++++++**********************************++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********%*********++++==----:---------------------------------------------------------------------------:::::::::::-------------------------------------------------------------------------------------------::::..............::::-----------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::----===+***########*********###########**++==----:::::::::#%###############%%%%%############*************#%####*********************++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%############*++****++++++*#*+**#*++++++**+++*#%#*%%@%@%@%%%%%%%#***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################*******************=:++++++++++++++++*****************************************************++++++++++++=+******************+==----=+++------------------------------------::-:-:----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::===================-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::::::::::--==----------------------------------------:::::-----:::--:::::::::::-:::--::::..............................:::-:::::::::::::::::::::::::.................................................................................::::::::::::::::::::::::::::::::::::::::::::----------------::::-------------------------------------------------------------------------------------::::::::::::::::---------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::--====++++++++++++++====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................:::::--====--::::::::::::---===+++++++++++++++++++++++++=====---::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------===+++++++******################*++==--------------------------------------------=====+++++++++++++++++======---------------:::::::::::::::::::::::::::::::::::::::::::::-----------------------====+++****************************************+++===-----------------------------==========------:::::::::::::::::::::::----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::---===++++++++++++++++++++======+++++++++++++++++++*********************************************************+++++++****************************************************************************************************************************************************************************************************************************************************************************************************##*####################################################################################################################################################################################################################################################################################################################################################################***++========+++****######################################################################################################**+++=============================================================+++
++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#%*********++++==--------------------------------------------------------------------------------::::::::::--------------------------------------------------------------------------------------------::::.............:::::------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++**#########*******############**++=-----::::::::=%%##############%%%%%%########****************#%####********************+++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%#################%%############**++***++++++****+*##*+++++++++++*%%#*#@%@@%@@%%%@%%#***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################*****************+::.-*+++++++++++++*******************************************************+++++++++++++******************++==----+*+=------------------------------------:-:::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::-====================-::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ..::::::::---=-------------------::-------------:::---:::---------::::::::::::::::::::::--:::.............................:::::::::::::::::::::::::::::...............................................................................:::::::::::::::::.::::::::::::::::::::::::::--------------:::::------------------------------------::------------------------------------------------:::::::::::::::-----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............:::::::::::::::::::::::::--:::::::::::::::::::--====+++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................::::--======--:::::::::::---===+++++++++++++++++++++++++======---:::::--==++++==---:::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------===++++++*******################**+==-------------------------------------------====+++++++++++++++++++++=====--------------::::::::::::::::::::::::::::::::::::::::::::::----------------------===+++*****************************************+++===------------------------===============------:::::::::::::::::::::::------------------------------------------------------------------------------::::::::::::::::::::::::::::::::--===++++++++++++++++++++======++++++++++++++++++**********************************************************++++++*******************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################**+++========+++****######################################################################################################***++============================================================++++
++++++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#%*********++++==---::---------------------------------------------------------------------------::::::::::--------------------------------------------------------------------------------------------:::::............:::::------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::----==+***#########******###########***+==----:::::::::+%%##############%%%%%######******************#%##**********************+++++*++++++*+++++**##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%###########***+****++++++*#**+*#*++++++++++++#%%%*#@%%%%%@%%%@%%#***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################***************=:.::-*******++++**********************************************************+++++++++++++*******************+=-=---+**=------------------------------------:::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-=====================-::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.  .:::::::--=--------------------------------:--::--::::::------:::::::::::::::::::::::::--::::::..........................:::::::::::::::::::::::::::::::...........................................................................:::::::::...........::::::::::::::::::::::::--------------:::::------------------------------------::-::---------------------------------------------:::::::::::::::-----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................::::::::::::--::::::::::::::::::---====+++++++++++++++====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::--======--:::::::::::---===++++++++++++++++++++++++=======---:::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------===++++++*******################**+==------------------------------------------====+++++++++++++++++++++++=====-------------::::::::::::::::::::::::::::::::::::::::::::::---------------------===+++*******************************************+++===--------------------==================------:::::::::::::::::::::::---------------------------------------------------------------------------------:::::::::::::::::::::::::::::--===+++++++++++++++++++++=====++++++++++++++++++**********************************************************++++++*******************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################**+++========+++****######################################################################################################***++============================================================++++
+++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#%#********+++==---:::---------------------------------------------------------------------------::::::::::---------------------------------------------------------------------------------------------::::............:::::-------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++***#########################**++==----:::::::::#%%##############%%%######******************##%##*********************++++++++++*++*+++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%###########***++***+++++++*#**+*#*+++++++*++++#%%%**%%%%%%%%%%@%%#***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################**************+:.::.-**********************************************************************+++++++++++++******************++==---++*=-------------------------------------:-::-------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-========================--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.  .::-::::----------------------------------:----:::::::::::-:::::::::::::::::::::::::::::::-:::::::.........................::::::::::::::::::::::::::::::::..............................................................................................::::::::::::::::::::::-------------:::::----------------------------------::::::::--------------------------------------------::::::::::::::------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::::::::::........................................::::::::::::::::::::::::::----====+++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................:::::::::::.::::::::--===++===-:::::::::::---===++++++++++++++++++++++++=======---:::::--===++===---::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------===++++++*******################**+==-----------------------------------------====+++++++++*********++++++++===-------------::::::::::::::::::::::::::::::::::::::::::::::---------------------===+++********************************************+++===---------------=====================-------:::::::::::::::::::::::------------------------------------------------------------------------------------::::::::::::::::::::::::::---==+++++++++++++++++++++=====++++++++++++++++++**********************************************************++++++*****************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################***+++=========+++***######################################################################################################***++============================================================++++
+++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************#%#*******++++==--::::---------------------------==---------------------------------------------:::::::::::---------------------------------------------------------------------------------------------:::::...........::::--------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++**#########################**++==-----:::::::=%%%#####%%%%%%%%%######********************#%%#**#******************++++++++++++++*++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################***++****+++++++****+*#++++++++#+++*#%%%**%%%%%%@%%%%%%#***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################**************+:::::=**************#*******************************************************+++++++++++++*******************+=----+**+-------------------------------------:-::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-=========================-:::::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::.  ..::::::--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................::::::::::::::::::::::::::::::::.............................................................................................:::::::::::::::::::-------------:::::---------------------------------::::::::::::------------------------------------------:::::::::::::----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................::::::::::::::::::::::------====++++++++++++++++===--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................:::::::::::::::::::::--==+++===--::::::::::---===+++++++++++++++++++++++========---:::::--===++===--:::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------===++++++*******################**+==----------------------------------------====+++++++**************+++++++===------------::::::::::::::::::::::::::::::::::::::::::::::---------------------===+++********************************************+++===-------------======================--------::::::::::::::::::::::------------------------------------------------------------------------====----------:::::::::::::::::::::::::---==+++++++++++++++++++++=====++++++++++++++++++**********************************************************+++++****************************************************************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################***+++=========+++***#######################################################################################################**++============================================================++++
+++++++++++++++++++++++++++++*************************++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************#%#*******+++==--:::::-------------------------=====--------------------------------------------:::::::::::---------------------------------------------------------------------------------------------:::::...........::::---------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++***########################**++==-----:::::::*%%##%%%%%%%%%%%#####**********************#%%###********************+++++++++++++++**%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################****++****+++++++***++**+++++++**+++*#%%%**%%%%%%@%%%%%%#***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################**************+:.:::+**************#********************************************************++++++++++++*******************++=---+**+-------------------------------------:-::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-==========================-::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::   .::::::---------:--------------------------::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................::::::::::::::::::::::::::::::..........................................................................................:::::::::::::::::::-------------::::--------------------------------::::::::::::::::---------------------------------------:::::::::::::-------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................:::::::::::::::::---------======+++++++++++++++===--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::::::::::::::--==++++==--::::::::::--====++++++++++++++++++++++=========---:::::--===++===--::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------===++++*********################**+==---------------------------------------====++++++******************+++++====------------::::::::::::::::::::::::::::::::::::::::::::---------------------===+++**********************************************+++===-----------=======================----------:::::::::::::::::------------------------------------------------------------------------==========-------::::::::::::::::::::::::::--==+++++++++++++++++++++=====++++++++++++++++++**********************************************************+++++***************************************************************************************************************************************************************************************************************************************************************************************#************########################################################################################################################################################################################################################################################################################################################################################################***+++=========+++****######################################################################################################**++============================================================++++
+++++++++++++++++++++++++++++***********************++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************%%%*******+++=--::::::------------------------======--------------------------------------------::::::::::-----------------------------------------------------------------------------------------------:::::.........:::::---------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@%@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++**########################**++==--------:::=%%%%%%%%%%%%%#####************************#%%##*********************+++++++++++++*+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################****+++***+++++++++**++**+++++++#++++#%%%%**%%%%%%%%%%%%%#***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################**************=::::-+*************##********************************************************+++++++++++++******************++=-=-=*++-------------------------------------::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-=========================-:::::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::.  .:-::::-----=---::--------------------:--::::::::::::::::::::::::::::::::::::::::::::::-::::::::::::-:::::................................:::::::::::::::::::::::::.......................................................................................::::::::::::::::::-------------:::::------------------------------:::::::::::::::::::--------------------------------------::::::::::::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................:::::::::::::::---------========++++++++++++++===--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................:::::::::::::::::::::::--==+++++==--::::::::::--====++++++++++++++++++++++==========---::::---======---:::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------===++++*********################**+==---------------------------------------===++++++********************+++++===-------------:::::::::::::::::::::::::::::::::::::::::::---------------------===+++**********************************************+++====--------------================---------------------------------------------------------------------------------------------------===============-----::::::::::::::::::::::::::--==+++++++++++++++++++++====+++++++++++++++++++***********************************************************++***************************************************************************************************************************************************************************************************************************************************************************************###**********##########################################################################################################################################################################################################################################################################################################################################################################***+++=========+++****######################################################################################################**+++===========================================================++++
++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#%%%#*****+++==--::::::------------------------=======-------------------------------------------::::::::::-----------------------------------------------------------------------------------------------:::::.........:::::----------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++***#######################**++===---------:*%%%%%%%%%%#####**************************#%%#*#*******************+++++++++++*++++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################****+++****+++++++++**++++++++++**+++*##%%%**%%%%%%%%%%%%##***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################**************=:::-+*************##**********************************************************++++++++++++*******************+==--=*++--------------------------------------::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-============---===========::::::::::::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::.  .:::::-----===--::-----------------------::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::::............................::::::::::::::::::::::::::::....................................................................................::::::::::::::::::------------:::::-----------------------------:::::::::::::::::::::-------------------------------------::::::::::::------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................::::::::::::::--------==============+++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................:::::::::::::::::::::::::--==+++++===--:::::::::--====+++++++++++++++++++++===========---::::---======---:::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------===++++*********################**+==--------------------------------------====+++++**********************+++++===-------------::::::::::::::::::::::::::::::::::::::::::--------------------====++************************************************+++====---------------------------------------------------------------------------------------------------------------------------====================------:::::::::::::::::::::::::--==++++++++++++++++++++++===++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################***+++=========+++****######################################################################################################**+++==========================================================+++++
++++++++++++++++++++++++++++++******************+++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#%%%#*****+++=---:::::------------------------========------------------------------------------:::::::::::------------------------------------------------------------------------------------------------::::.........::::-----------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@#-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----==++**######################***+++===---------%%%%%%%%%#####***********************+***#%####*******************+++++++++++++*+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################**+**+++***++++++++++**++++++++++**+++###%%%**#%%%%%%%%%%%##***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%###############################################**************:::=+**************##**********************************************************++++++++++++********************+=--=**+--------------------------------------::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-===========:::-==========::::::::::::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::::.  .:::::---=====--::--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................::::::::::::::::::::::::::::::..................................................................................:::::::::::::::::------------:::::----------------------------::::::::::::::::::::::-------------------------------------::::::::::::----------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................::::::::::::::------===================++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................::::::::::::::::::::::::::::---==++++++==--:::::::::--====++++++++++++++++++++============---::::---======---::::::::::::::::::::::::::::::::::::::::::------------------------------------------------===++++*********################**+==--------------------------------------===++++*************************++++===-------------::::::::::::::::::::::::::::::::::::::::::--------------------====++************************************************+++====--------------------------------------------------------------------------------------------------======----------------======================-------:::::::::::::::::::::::::--==++++++++++++++++++++++===++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################################################################################################***+++=========+++****######################################################################################################**+++==========================================================+++++
++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************%%%%%*****++==--::::::------------------------========------------------------------------------:::::::::::------------------------------------------------------------------------------------------------::::.........::::------------------------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++**####################*****+++===--------#%%%%%#####***********************+++***######********************+++++*++*+++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%#######**++++*++***++++++++++++++++++++++*+++*###%%%#*#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*************+::++***************##***********************************************************++++++++++++******************+++--=+*+=-------------------------------------::-:----------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::===========-::--=========-:::::::::::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::.  .::::----======-::::------------------------------::::::::::::::::::-::::::::::::::::::::::::::::::::::::::::::::::......................:::::::::::::::::::::::::::::::::::.............................................................................:::::::::::::::::------------:::::----------------------------:::::::::::::::::::::::------------------------------------::::::::::::-----------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................:::--::::::::-----=======================+++=====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............::::::::::::::::::::::::::::::::--==+++++++==--:::::::::--====++++++++++++++++++==============---::::---======---:::::::::::::::::::::::::::::::::::::::::-------------------------------------------------===++++********#################**+==--------------------------------------==+++++**************************++++===--------------:::::::::::::::::::::::::::::::::::::::::-------------------===+++*************************************************++====------------------------------------------------------------------------------------------------============================================--------::::::::::::::::::::::::::--===+++++++++++++++++++++===+++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################################################################################################################################################################################################################################################################################################################################################################***+++=========+++***#######################################################################################################**+++==========================================================+++++
+++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************%%%%%****+++=---::::::-----------------------=========------------------------------------------::::::::::-------------------------------------------------------------------------------------------------::::........:::::------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++***################********++++====------#%######***********************+++++***#####*********************+++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################**++++++++***++++++++++++++++++++++*+++*##%%%%**#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################**************++****************##*************************************************************+++++++++++*******************++=-=+*+=-------------------------------------::-:--------------:--------::::::::::::::::::::::::::::::::::::::::::::::::::::-===========:-::-========-:::::::::::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::::::.  .:::---========:..::::-----------------------------::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::::::::::::::::::::::::::::::::::::...........................................................................:::::::::::::::::------------:::-----------------------------:::::::::::::::::::::::------------------------------------::::::::::::----------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................::----:::::::-----==============================---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............:::::::::::::::---::::::::::::::---==+++++++==--:::::::::--====++++++++++++++++================---::::---======---:::::::::::::::::::::::::::::::::::::::::-------------------------------------------------===++++********#################**+==-------------------------------------===++++***************************++++===--------------::::::::::::::::::::::::::::::::::::::::--------------------===+++*************************************************++====-----------------------------------------------------------------------------------------------===========================================----------::::::::::::::::::::::::::--===+++++++++++++++++++++===+++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################################################################################################################################################################################################################################################################################################################################################################***++==========+++***#######################################################################################################***++==========================================================+++++
++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************#%%%%%***+++==--::::::-----------------------==========------------------------------------------::::::::::-------------------------------------------------------------------------------------------------::::........:::::-------------------------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............::....................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----==++***###########**************++++====---+######******************+++++++++++***######*********************++++++++*++*+*#@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%#######*+++++++++**++++++++++++++++++++++*++++###%%%%**#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*********************************##*************************************************************+++++++++++*******************+*+==+*+=--------------------------------------:-:--------------:--------::::::::::::::::::::::::::::::::::::::::::::::::::::-===========-::::-=======-::::::::::::::::::------------------:::::::::::::::::::::::::::::::::::::::::::::::.  .::---====-====: ....::-------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................:::::::::::::::::::::::::::::::::::::::........................................................................:::::::::::::::::-----------::-------------------------------:::::::::::::::::::::--------------------------------------::::::::::-------------------------::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====+==++++++++++++==::...............................................................:::----:::::::------=============================---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............:::::::::::::::-----:::::::::::::--===+++++++==--:::::::::--====+++++++++++++++=================---:::::---=====---:::::::::::::::::::::::::::::::::::::::::--------------------------------------------------==+++++*******#################**+==-------------------------------------===++++****************************+++===--------------::::::::::::::::::::::::::::::::::::::::--------------------===+++*************************************************+++===---------------------------------------------------------------------------------------------=======================================---------------::::::::::::::::::::::::::::-===+++++++++++++++++++++===+++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************###########################################################################################################################################################################################################################################################################################################################################################################################**+++==========+++****######################################################################################################***++==========================================================+++++
+++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************#%%%%%#**+++==--::::::----------------------===========------------------------------------------::::::::::-------------------------------------------------------------------------------------------------::::........:::::-------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............:::::...................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++***########*******++++++*****++++===-=####*******************++++++++++++****#####********+***********+++++++++++++++#@@@@%@@@@%%%%@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%#######**++++++++**+++++++++++++++++++++++++++*###%%%%**#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################********************************##***************************************************************+++++++++++*******************++==+*+=--------------------------------------:::--------------::--------::::::::::::::::::::::::::::::::::::::::::::::::::::-===========-::::-=======::::::::::::::::::------------------::::::::::::::::::::::::::::::::::::::::::::::::.  .::---=========:   ...:::--------------------------------:::--:::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................::::::::::::::::::::::::::::::::::::::......................................................................::::::::::::::::---------:::--------------------------------:::::::::::::::::::::--------------------------------------::::::::::-----------------------::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====+++++++===++++++++++++++++++++++==-:................................ ......................::-------:::::--------===========================---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::::::::::::::-------::::::::::::--==+++++++++=--:::::::::--===+++++++++++++++==================---:::::---====----:::::::::::::::::::::::::::::::::::::::::--------------------------------------------------==+++++******##################**+==-------------------------------------===+++*****************************++++==--------------::::::::::::::::::::::::::::::::::::::::--------------------===++**************************************************+++===---------------------------------------------------------------------------------------------==================================-------------------:::::::::::::::::::::::::::::-===++++++++++++++++++++++=+++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################**+++==========+++****######################################################################################################***++==========================================================+++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************#%%%%%#*+++==---:::::----------------------============-----------------------------------------:::::::::::-------------------------------------------------------------------------------------------------::::........:::::-------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............::::::...................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++******#*******++++++++++******+++===*%###******************++++++++++++****#####********+++*********++++++++*++++++#@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################**++++++++***+++++++++++++++++++++++++++####%%%%**#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################********************************##***************************************************************+++++++++++*******************+*+=+*+=--------------------------------------::::--------------:---------:::::::::::::::::::::::::::::::::::::::::::::::::::-===========-:-:::-======-:::::::::::::::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::.  .:---====-=====:  . .....:----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::-:::::::::::::::..................::::::::::::::::::::::::::::::::::::...................................................................::::::::::::::::---------::----------------------------------:::::::::::::::::::---------------------------------------::::::::::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::---=====+++++++++==++++++++++++++++++++++++++++++++++++++=-:.............................................::---===---::::-----------=======================---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........::::::::::::::::---=---:::::::::::---==+++++++++==--::::::::--===++++++++++++++====================---::::---====----:::::::::::::::::::::::::::::::::::::::::--------------------------------------------------==+++++******##################**+==-------------------------------------==++++******************************+++===--------------:::::::::::::::::::::::::::::::::::::::-------------------====++**************************************************+++===--------------------------------------------------------------------------------------------=============================-----------------------:::::::::::::::::::::::::::::::-===++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################**+++===========++****######################################################################################################***++==========================================================+++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************%%%%%%#*+++==--::::::---------------------=============-----------------------------------------::::::::::--------------------------------------------------------------------------------------------------::::........::::---------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............::::::::..................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++***********+++++==+++++*******+++=+##*#******************++++++++++++****#####********+++++++++++++++++++++++++++*%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%#######**++++++++**+++++++++++++++++++++++++++*###%%%%%**#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################********************************###****************************************************************++++++++++******************++++++++=---------------------------------------:::--------------:----------:::::::::::::::::::::::::::::::::::::::::::::::::::============-:::::-=====-::::::::::::::::::------------------:::::::::::::::::::::::::::::::::::::::::::::::-:.  .:----=-=======:  ..   ...::-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::-::::::::::::::::::...................:::::::::::::::::::::::::::::::::::................................................................::::::::::::::::--------------------------------------------:::::::::::::::::::---------------------------------------::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::--=====================++======++++++++++++++++++++++++++++++++++++++==--:.... ........ .......................::--====----::----------------===================---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::::---===---::::::::::--==++++++++++==--::::::::--===++++++++++++++====================---::::----===---::::::::::::::::::::::::::::::::::::::::----------------------------------------------------===++++******##################**+==-------------------------------------==+++*******************************+++===--------------:::::::::::::::::::::::::::::::::::::::-------------------===+++**************************************************+++===-------------------------------------------------------------------------------------------=====================----------------------------:::::::::::::::::::::::::::::::::::-===++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################**+++===========++****#######################################################################################################**++==========================================================+++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************#%%%%%%%*++===--:::::---------------------==============-----------------------------------------::::::::::-------------------------------------------------------------------------------------------------:::::........::::---------------------------------------------------------------------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........::::::::::.................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===+++*******++++=======+++********+++*###*****************+++++++++++++****#####*******+++*++*++++++++++++++++++++++%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%########*++++++++++++++++++++++++++++++++++++++####%%%%#**#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################********************************##*****************************************************************+++++++++++*****************+*++***+=---------------------------------------:::--------------:----------:::::::::::::::::::::::::::::::::::::::::::::::::::-============::-:::-====-::::::::::::::::::------------------::::::::::::::::::::::::::::::::::::::::::::::::::.  .:---==-======-:    ..    ..:--------------------------------------:::::::::::::::::::::::::::::::::::::::-::::::::::::::::::::::::::....................::::::::::::::::::::::::::::::::..............................................................:::::::::::::::::--------------------------------------------:::::::::::::::::----------------------------------------::::::::::--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::---==============================++++++++++++++++++++++++++++++++++++++++++++++++==--:......      ..................::--======-----------------------================---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........:::::::::::::::--=====---::::::::--===++++++++++==--::::::::--===+++++++++++++=====---=============---::::----==----::::::::::::::::::::::::::::::::::::::::----------------------------------------------------===++++*****###################**+==------------------------------------===+++*******************************+++===---------------::::::::::::::::::::::::::::::::::::::-------------------===+++***************************************************++===-------------------------------------------------------------------------------------------===============-----------------------------::::::::::::::::::::::::::::::::::..:::--===++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################**+++===========++****#######################################################################################################**+++=========================================================++++*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************##%%%@%%%*++==----:::---------------------===============-----------------------------------------::::::::::-------------------------------------------------------------------------------------------------:::::........::::----------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............::::::::::.................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====+++++++++++========+++*********++##***************++++++++++++++++****#####*******+++++++++++++++++++++++++++++*@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%######***+++++++++++++++++++++++++++++++++++++*%#%#%%%%#**#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*******************************###******************************************************************++++++++++******************+*++**+=---------------------------------------::::-------------:----------:::::::::::::::::::::::::::::::::::::::::::::::::::-============-::::::--===:::::::::::::::::::-----------------:::::::::::::::::::::::::::::::::::::::::::::::::::.  .:---==-==-====. ..  . ... ..::-------------------------------------:::::::::::::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::.....::::::........:::::::::::::::::::::::::::::::............................................................::::::::::::::::---------=----------------------------------::::::::::::::::------------------------------------------:::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++=-:......    .............::--=======------------------------=============---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::::::::::::::---==+===--::::::::--==+++++++++++==--::::::::--===+++++++++++++====------======++===---:::::---==----::::::::::::::::::::::::::::::::::::::::----------------------------------------------------===++++*****###################**+==------------------------------------===+++*******************************+++===---------------::::::::::::::::::::::::::::::::::::::-------------------===+++***************************************************++===--------------------------------------------------------------------------------------------=========-----------------------------:::::::::::::::::::::::::::::::::::::::..:::--===++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################**+++===========++****#######################################################################################################**+++=========================================================++++*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************#%%%%%%%*+===----------------------------===============-----------------------------------------::::::::::-------------------------------------------------------------------------------------------------:::::.......:::::----------------------------------------------------------------------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===+++++++++======-==+++*********+*#*************++++++++++++++++++****#####********+++++++++++++++++++++++++++++%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%######****++++++++++++++++++++*++++++++++++++++#%#%#%%%%#**#%@%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*******************************###***************************************************#**************+++++++++++*****************+++++**=----------------------------------------:-:-------------:-----------:::::::::::::::::::::::::::::::::::::::::::::::::::-============::::-:::-==-::::::::::::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::.  .:----===-=====.    . .. ......:---------------------------------------:::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........:::::::::::::::::::::::::::::::.........................................................:::::::::::::::::---:--=------------------------------------.:::::::::::::-------------------------------------------:::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===--================================================++=++++++++================----:::...............:-====-:.............::--=========---------------------------=======----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::::::::::::::--===++===--:::::::--==+++++++++++==--::::::::--===+++++++++++++===--------=====+====---:::::---------::::::::::::::::::::::::::::::::::::::------------------------------------------------------===++++*****###################**+==------------------------------------===+++*******************************+++===---------------:::::::::::::::::::::::::::::::::::::--------------------===+++***************************************************++===----------------------------------------------------------------------------------------------==-----------------------------:::::::::::::::::::::::::::::::::::::::::::::.:::--===+++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################***+++===========+++***#######################################################################################################**+++=========================================================++++*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************#%%%%%%%#+==----------------------------================-----------------------------------------::::::::::-------------------------------------------------------------------------------------------------::::........::::------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::::::::::::::................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====+++++++===---===+++*****#****##***********+++++++++++++++++++****#####******++++++++++++++++++++++++++++++++@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%#####################***++++++++++++++++++++**+++++++++++++++*%%%#%%%%%***#%%%%%%%%%%###****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*******************************###****************************************************##**************++++++++++********************+***=----------------------------------------:-:-------------::----------:::::::::::::::::::::::::::::::::::::::::::::::::::-============-::-:::::-=-::::::::::::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::.  .---==---=====-. .  .............::---------------------------------------::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::.........::::::::::::::::::::::::::.........................................................::::::::::::::::-:-:--==------------::----------------------:.:::::::::::--------------------------------------------:::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=========================================--------------------------------------------------:::.  ......::::.........:---===========-----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::::::::::::::--==++++==--::::::--===+++++++++++==--::::::::--===++++++++++++===----------====++===---:::::---------::::::::::::::::::::::::::::::::::::---------------------------------------------------------==++++*****###################**+==------------------------------------===+++*******************************+++===---------------:::::::::::::::::::::::::::::::::::::-------------------====+++***************************************************++===------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::.:::--==++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################***+++===========+++***#######################################################################################################**+++========================================================+++++*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************#%%%%%%%%#+==---------------------------=================-----------------------------------------::::::::::-------------------------------------------------------------------------------------------------::::........::::-------------------------------------------------------------------------------------------------------------------------------------------*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@%::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........::::::::::::::::................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====+++++===----===+++*****#***##*********++++++++++++++++++++++****####*******+++++++++++++++++++++++++++++++*@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%######****++++++++++++++++++++**+++++++++++++++#%%%#%%%%%***#@%%%%%%%%%###****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*******************************###***************************************************###***************+++++++++************************=------------------------------------------:-------------::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::=============-::::::::-=-::::::::::::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::.  :---------=====.  .  ....  ........:------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::::::::::::::::::::::.......................................................:::::::::::::::--::-===-----------::.::--------------------:.::::::::::----------------------------------------------:::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------================-------------------------------------------------------------------------:..  .     .. ......::--==================----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::--==++++===-::::::--==+++++++++++++==--:::::::--===+++++++++++====---:::----===+++===----::::---------::::::::::::::::::::::::::::::::::-----------------------------------------------------------===+++*****###################**+==-------------------------------------==+++*******************************+++===---------------:::::::::::::::::::::::::::::::::::::-------------------====+++***************************************************+++==---------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:.:::--==++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################***+++===========+++***#######################################################################################################**+++========================================================+++++*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************%%%%%%%%#+=----------------------------=================-----------------------------------------:::::::::--------------------------------------------------------------------------------------------------::::.......:::::--------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@%@#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::::::................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===++++===-=---===++**********##********++++++++++++++++++++++****####*******++++++++++++++++++++++++++++++++*@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*****++++++++++++++++++++*+++++++++++++++*%%%%%%%%%%***%@%%%%%%%%%###****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*******************************####***************************************************####**************++++++++++***********************=--------------------------------------:---:-------------::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::-=============-:::::-::--:::::::::::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::. .:----=-----====.  . .................:-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................::::::::::::::::-:-===----------:-:...:--:------------------:.:::::::::-----------------------------------------------::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------==---------------::....:----------------------------------------------------------------------------:. . .  .........:--=====================-------------------------:::::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............:::::::::::--==++++===--:::::--==+++++++++++++==--:::::::--===+++++++++++===----::::---===++++==----:::::--------::::::::::::::::::::::::::::::::::-----------------------::----------------------------------===+++*****###################**+==-------------------------------------==+++*******************************+++===---------------:::::::::::::::::::::::::::::::::::::-------------------====+++***************************************************+++==-------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################***+++===========+++***#######################################################################################################**+++========================================================+++++*
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************#%%%%%%%#+=---------------------------==================----------------------------------------::::::::::--------------------------------------------------------------------------------------------------::::.......:::::--------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::::::::..............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---========-----====+++********##*******++++++++++++++++++++++++***####*******+++++++++++++++++++++++++++++++++*%@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%######****++++++++++++++++**+++*+++++++++++++++#%%%%%%%%%#***%%%%%%%%%%%###****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*******************************###*****************************************************####**************+++++++++***********************=--------------------------------------:------------------:------------::::::::::::::::::::::::::::::::::::::::::::::::::-==============:::::::::::::::::::::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .---------=-===-. .. ..................:--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................:::::::::::::::::-===-----------:.....:--------------------:..:::::::------------------------------------------------::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------:::......::----------------------------------------------------------------------------------:.  ..  ......::--=======================----------------------:::::..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................:::::--==++++++==---:::--==++++++++++++++==--::::::---===+++++++++++===---::::::---===+++===---:::::--------::::::::::::::::::::::::::::::::------------------------:::----------------------------------===++++****###################**+==-------------------------------------==+++*******************************+++===---------------:::::::::::::::::::::::::::::::::::::-------------------====+++***************************************************+++==----------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===+++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################################################################**+++===========+++***#######################################################################################################**+++========================================================++++**
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************#%%%%%%%#+=--------------------------===================----------------------------------------::::::::::-------------------------------------------------------------------------------------------------:::::.......::::----------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::::::::::::::::::..............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=======----=*%#++++++++++**##******+++++++++++++++++++++++++***####*******+++++++++++++++++++++++++++++++++++#@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%######*****++++++++++++++++**++*+++++++++++++++*%%%%%%%%%%#***%%%%%%%%%%%###****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################******************************####*****************************************************####**************+++++++++**********************+=----------------------------------------:----------------:------------:::::::::::::::::::::::::::::::::::::::::::::::::::-=+===========-::::::-:::::::::::::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::..::---------====-.  . ....................:----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................::::::::::::::::-=====---------:.......:-------------------:..::::::-------------------------------------------------:::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------::::........::-----------------------------------------------------------------------------------------:. ........::--=========================-------------------::::::...............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::--==+++++++==--::---==++++++++++++++==--::::::---===+++++++++++===--:::::::---===+++===---:::::--------:::::::::::::::::::::::::::::::-------------------------::::---------------------------------===++++****###################**+==-------------------------------------===++*******************************+++==----------------:::::::::::::::::::::::::::::::::::::------------------=====+++***************************************************+++===---------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::--===+++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################################################################**+++===========+++***#######################################################################################################***++========================================================++++**
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************########*+--------------------------====================----------------------------------------::::::::::-------------------------------------------------------------------------------------------------::::........::::-----------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@@%@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........::::::::::---:::::::..............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===--===-+#%%###**+++++***#******++++++++++++++++++++++++++**####*******++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%#####******+++++++++++++++**+++*+++++++++++++++#%%%%%%%%%%***#%%%%%%%%%%%###****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*******************************####*****************************************************#####**************+++++++++*********************+=----------------------------------------:----------------:------------::::::::::::::::::::::::::::::::::::::::::::::::::::-=============-:::::::-:::::::::::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:..:---------=-===-..........................::----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................::::::::::::::-=====---------::.......:--------------------:.:::::--------------------------------------------------:::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------:::..........::------------------------------------------------------------------------------------------------:.  .....:---==========================-------------::::::::::..................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::--==+++++++===-----===++++++++++++++==--::::::---===++++++++++===---:::::::---===+++===----::::--------::::::::::::::::::::::::::::::--------------------------::::---------------------------------===++++****###################**+==-------------------------------------===+++*****************************+++===----------------:::::::::::::::::::::::::::::::::::::---------------=--=====+++***************************************************+++===--------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::::---===++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################################################################**+++===========+++***#######################################################################################################***++========================================================++++**
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************######*++--------------------------====================----------------------------------------:::::::::--------------------------------------------------------------------------------------------------::::........::::-----------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@#::::::::::::::::::::::::::::::::::::::::::::::::::::::.............::::::::::---:::::::..............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------+#%**%%#########************++++++++++++++++++++++++++***###*******++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%##################%#####******++++++++++++++++**+++*++++++++++++++*%%%%%%%%%%%***#%@%%%%%%%%%###****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################******************************####*******************************************************#####**************++++++++*********************+=----------------------------------------::-:-------------:------------::::::::::::::::::::::::::::::::::::::::::::::::::::::=============-:::::-::::::::::::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::-::::-:.::---------=====-. ..........................:---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................:::::::::::::-=====-------:-:.........--------------------:.:::::--------------------------------------------------::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------::::::::::::------------------------------------------------------------------------------------------------------------.....::--============================-----------::::::::::.......................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................::--==++++++++==----===+++++++++++++++===-::::::---===++++++++++===---:::::::---==++++===----::::-------:::::::::::::::::::::::::::::::-------------------------:::::---------------------------------===++++****###################**+==--------------------------------------==+++*****************************+++===----------------:::::::::::::::::::::::::::::::::::::-------------=-========+++***************************************************+++===---------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################################################################**+++===========+++***#######################################################################################################***++========================================================++++**
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************++=-------------------------=====================----------------------------------------::::::::---------------------------------------------------------------------------------------------------::::........::::------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::.............:::::::::---:-:::::::..............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:-+#%%%%%%#######*************++++++++++++++++++++++++++++**###*******+++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%########################******+++++++++++++++**+++++++++++++++++++##%%%%%%%%%#***%%%%%%%%%%%####****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################******************************###*********************************************************####***************+++++++*********************+----------------------------------------------------------::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::-============-:::::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------====-..............................:-----------------------------------------------------:------------::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................::::::::::::-====---------:-..........:--------------------:::::---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--:::-:--------------------------------------------------------------------------------------------------------------------------------------------------------------:.:::-=============================----------::::::::::.............................:::::::::::::::::::::::::::::::::::::::::::::::::::::.....................::--==++++++++=========++++++++++++++++==--:::::---==+++++++++++===--::::::::---==+++++==----::::--------::::::::::::::::::::::::::----------------------------::::::---------------------------------===++++****###################**+==--------------------------------------==+++*****************************+++==-----------------:::::::::::::::::::::::::::::::::::::-----------=---=-======++****************************************************+++===---------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====+++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################################################################**+++===========++****#######################################################################################################***++=======================================================+++++**
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************+++=--------------------------=====================----------------------------------------::::::::---------------------------------------------------------------------------------------------------::::.......:::::------------------------------------------------------------------------------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%=::::::::::::::::::::::::::::::::::::::::::::::::::..............:::::::::-----:::::::..............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..::::::=#%%%%%%########**************+++++++++++++++++++++++++++**###*******+++++++++++++++++++++++++++*++++++++++++*#@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%##################%%####*******+++++++++++++++**+++*++++++++++++++*#%%%%%%%%%%****%@%%%%%%%%%####***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*******************************###**********************************************************####**************+++++++*********************+----=---------------------------------------:-------------::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==--=======::-::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------===-:...............................::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::---====-------:-:..........:--------------------:::::--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:---------------------------------------------------------------------------------------------------------------------------------------------------------------------=============================----------::::::::::................................::::::::::::::::::::::::::::::::::::::::::::::::::.....................::--==+++++++++=======+++++++++++++++++==--:::::--===++++++++++===---::::::::---==+++++==----::::--------::::::::::::::::::::::::::----------------------------::::::----------------------------------==++++****###################**+==--------------------------------------===+++***************************+++===-----------------:::::::::::::::::::::::::::::::::::::---------------========++****************************************************+++===----------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====+++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################**+++==========+++****#######################################################################################################***++=======================================================++++***
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************+++++==--------------------------======================----------------------------------------:::::::-------===------------------------------------------------------------------------------------------::::.......:::::-------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%:::::::::::::::::::::::::::::::::::::::........................::::::::-------:::::::..............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::::::::::...:-#%%%%%%####****************++++++++++++++++++++++++++++++**###*******++++++++++++++++++++++++++++++++++++++++*#%@@@@@@@@@%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#%%%##################%#####*******++++++++++++++**++++**+++++++++++++##%%%%%%%%@#***#%@%%@%%%%%%####***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################******************************####**********************************************************#####**************+++++++********************+----==--------------------------------------:-------------::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--:-=======-::::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------===-:.................................::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................:::::::::==-===---------:............--------------------::::---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------=============================---------:::::::::::....................................::::::::::::::::::::::::::::::::::::::::::::::.....................::--==++++++++++=====++++++++++++++++++==--:::::--===++++++++++===---::::::::---==+++++===---::::--------::::::::::::::::::::::::::----------------------------::::::----------------------------------==++++****###################**+==---------------------------------------==+++***************************+++===-----------------:::::::::::::::::::::::::::::::::::::---------------========++****************************************************+++===-----------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::-------------------:::::::::::::::::::---====++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################**+++==========+++****#######################################################################################################***++=======================================================++++***
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************+++===---------------------------=======================---------------------------------------:::::::-----========---------------------------------------------------------------------------------------::::.......::::--------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@*:::::::::::::::::::::::::::::::::........................::...::::::::-------:::::::.............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....-*%%%%%%%#****##*************++++++++++++++++++++++++++++++**###*******+++++++++++++++++++++++++++++++++++++**#%%@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#%%%#######################*******+++++++++++++++**+++**+++++++++++++*##%%%%%%%%%****%%@%%@%%%%%%####***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################******************************###************************************************************#####*************+++++++********************+----+=--------------------------------------:-------------:::-----:----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=======-:-:::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------===-:...................................::-----------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::-=-==-=---------.............:--------------------:::--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::::::------------------------------------------------------------------------------------------------------------------------------------------------------------============================--------:::::::::::.........................................:::::::::::::::::::::::::::::::::::::::::.........      ......::--==+++++++++++++++++++++++++++++++++==--:::::--===+++++++++===---:::::::::---==+++++===---:::::-------:::::::::::::::::::::---------------------------------::::::----------------------------------==++++****###################**+==---------------------------------------===+++*************************+++===-----------------::::::::::::::::::::::::::::::::::::::---------------========++****************************************************+++===------------------------------------------------------------------------------------------------------::::::::::-----------------------------------------::::::::::::::::---=====++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################***++=========++++****#######################################################################################################***++======================================================++++****
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************+++==---------------------------========================---------------------------------------::::::----===========-------------------------------------------------------------------------------------:::::.......::::---------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@=:::::::::::::::::::::::::::::::..............................:::::::---------::::::.............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....+%%%%%%%#******************++++++++++++++++++++++++++++++++***##********+++++++++++++++++++++++++++++++++++**%%@@%@%%@@@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%################%######*******++++++++++++++**+++***+++++++++++++*#%%%%%%%%%#***#%%@%%@%@%@%####****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*****************************####*************************************************************####**************+++++++*******************+----+=--------------------------------------:--------------::-----:------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-========-::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------====-:......................................:------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................::::::::::-=--===---------:.............:--------------------:::------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================--------::::::::::...........................................:::::::::::::::::::::::::::::::::::::::.........         ....::--==+++++++++++++++++++++++++++++++++==--:::::--===+++++++++===---:::::::::--===+++++===---:::::-------:::::::::::::::::::::---------------------------------:::::::---------------------------------==++++****###################**+==----------------------------------------===+++***********************+++====-----------------::::::::::::::::::::::::::::::::::::::---------------========+++***************************************************+++===-----------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::---=====+++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################***++=========+++****########################################################################################################***++======================================================++++****
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************+++==---------------------------========================---------------------------------------::::::---=====+++=====------------------------------------------------------------------------------------:::::.......::::---------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%:::::::::::::::::::::::::::::::.............................::::::::---------::::::.............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...=#%%%%%%#*#####**********+++++++++++++++++++++++++++++++++++**###********+++++++++++++++++++++++++++++++++++*#%@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#%%%%################%#####********+++++++++++++***++***+++++++++++++*##%%%%%%%%%****#@@@%%@%@%@%####****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*****************************###**************************************************************#####**************++++++*******************+----+=-----------------------------------------------------::-----:------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=======-:::-::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------====-:........................................::-------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::::::::::::--==-==--------:...............---------------------::---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================--------::::::::::............................................::::::::::..........:::..::::::::..............         ....::--==+++++++++++++++++++++++++++++++++==--:::::--===+++++++++===--::::::::::--===++++++==----::::-------::::::::::::::::::::----------------------------------:::::::---------------------------------==++++****###################*++==-----------------------------------------==++++*********************++++===-----------------:::::::::::::::::::::::::::::::::::::::------------------=====+++***************************************************+++===------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::---=======++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################***+++========+++****########################################################################################################***++=====================================================+++++****
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+++***************************++===-------------------------=========================---------------------------------------:::::---====+++++++====-----------------------------------------------------------------------------------::::.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@*.::::::::::::::::::::::::::................................::::::::---------::::::.............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. :#%%%%%%#*##*#************++++++++++++++++++++++++++++++++++++**##********++++++++++++++++++++++++++++++++++*#%@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%#%%%%###############%######*********++++++++++++**+++***+++++++++++++*##%%%%%%%%#****%@@@@@%@@%%%####****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################***************************####***************************************************************#####**************+++++*******************+----++-----------------------------------------------------::-----:------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-======-::-::-:::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------====-:...........................................:---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................::::::::::---==-==-------::...............:--------------------:::-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::--:::::::::::::::::.......:::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================---------:::::::::.............................................:::::::......................................          ....::--==+++++++++++++++++++++++++++++++++==--:::::--===++++++++===---::::::::::--===++++++==----::::-::---::::::::::::::::::::-----------------------------------:::::::---------------------------------===+++****##################**++=------------------------------------------===++++*******************++++===------------------::::::::::::::::::::::::::::::::::::::--------------------====+++***************************************************+++===-------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::---=======+++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################################################################################################################################################################################################################################################################***+++========++****#########################################################################################################**+++=====================================================++++*****
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++++***********************++==--------------------------=========================---------------------------------------:::::---===+++++++++===-----------------------------------------------------------------------------------::::.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@=.:::::::::::::::::::::::..................................:::::::----------::::::.............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.  =%%%%%%###**##*##********+++++++++++++++++++++++++++++++++++++**##*********+++++++++++++++++++++++++++++++++*#%@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%#%############%%####***********+++++++++++***+++**++++++++++++++*##%%%%%%%%****#@@%%@@%@@%%%####****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################***************************####****************************************************************####**************++++++******************+---=++------------------------------------:--:-------------::-----:------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-======-::::-:::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------=====-:.............................................:----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................::::::::::---=--==--------:................:-----::-------------:::--------:::::--------------------------::::::::::::::::....:::::::::::::::::::::::::::::::::::::::::::::.:::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================---------::::::::::.............................................:::::.......................................          .....:--==+++++++++++++++++++++++++++++++++==--:::::--===++++++++===---::::::::::--===++++++===---::::-::::::::::::::::::::::::------------------------------------:::::::---------------------------------===+++****##################**++=-------------------------------------------===+++++****************++++====-----------------:::::::::::::::::::::::::::::::::::::::--------------------====+++***************************************************+++===--------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::---========+++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################**+++=======+++****#########################################################################################################**+++=====================================================++++*****
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++********************************+++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++*******************+++==--------------------------=========================---------------------------------------::::---===++++++++++===-----------------------------------------------------------------------------------::::.......:::::-----------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%:.:.:::::::.::::::::::::.....................:............:::::::----------::::::............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::::.  .*%%@@@%#****************+++++++++++++++++++++++++++++++++++++++*##********++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%*#%#%%%%%%%###########%%####*************++++++++++**+++***+++++++++++++*##%%%%%%%%#****%@@@%@@@@%@%%###****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################*************************#####****************************************************************#####**************+++++******************=---=++------------------------------------------------------:----:--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=====:::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------=====-:.....................::........................::---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................:::::::::-----===-------:..................:-:-:-:--------------::-:::::::::::::::::------------------:::::::::::::::::...................:.:::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================----------:::::::::.............................................::::........................................          ....:::-===++++++++++++++++++++++++++++++++==--::::---===+++++++===---:::::::::::--===++++++===----::::::::::::::::::::::::::::--------------------:----------------::::::---------------------------------===+++****##################**+==--------------------------------------------===++++++***********++++++====----------------:::::::::::::::::::::::::::::::::::::::----------------------====+++***************************************************+++===--------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::---========++++++++++++++++++++++++++++++++++**********************************************************************************+++*********************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################***+++=======+++****#########################################################################################################**+++====================================================+++++*****
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++==-------------------------==========================---------------------------------------:::----==+++++++++++===----------------------------------------------------------------------------------:::::.......::::------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@*:..:::..:::::::::::::::..................................:::::::----------::::::............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:-:::::.  :%%%@@@%#**#*************+++++++++++++++++++++++++++++++++++++++*##*********+++++++++++++++++++++++++++++++***#%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%%%%%%###########%%###**************++*++++++**++++**++++++++++++++*###%%%%%%%****#%@@@@@@@@%@%%###****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################*********************#####******************************************************************#####*************+++++******************=---=+=------------------------------------------------------:----:--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-====-::::-:::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=====-:......................:::........................::----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................::::::::-------==-------:..................:-----:------------=-:::::::::::::::::::::----------------:::::::::::::::::................:::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============----------:::::::::..............................................::........................................           .....::-===++++++++++++++++++++++++++++++++==--::::---===++++++====---:::::::::::--==+++++++===----::::::::::::::::::::::::::::----------------::::::--------------:::::::---------------------------------===+++****#################**++==---------------------------------------------====+++++++*****++++++++====------------------::::::::::::::::::::::::::::::::::::::----------------------====+++***************************************************+++===---------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::----========++++++++++++++++++++++++++++++++++*********************************************************************************++++*********************************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################################################################################################################################################################################################################################################################**+++=======+++****#########################################################################################################**+++====================================================++++******
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++===-------------------------==========================----------------------------------------:----===+++++++++++====---------------------------------------------------------------------------------:::::.......::::-------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@+....:::..:.:.......::...................................:::::::----------::::::............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   +%%@@@@%#**#*#**********++++++++++++++++++++++++++++++++++++++++**#**********++++++++++++++++++++++++++++++***#%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%#########%%####***************+++++*+**+++***+++++++++++++++*##%%%%%%%#****%@@@@@@@@@@%%####****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*********************##%#*******************************************************************######*************++++******************=-=-=+=------------------------------------------------------:----:--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-====-::-::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------======-:.......................:::........................:::----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::::::----------------:...................:-----------------==-::::::::::::::::::::::------------::::::::::::::::::...............::::::::::::::::::::::::..:::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============-----------::::::::........................................................................................           .....::-====+++++++++++++++++++++++++++++++==--:::::--===+++++====---::::::::::::--==+++++++===-----:::::::::::::::::::::::::::----------------::::::--------------:::::::----------------------------------==+++****#################**++=-----------------------------------------------=====++++++++++++++++=====-------------------::::::::::::::::::::::::::::::::::::::-----------------------===+++***************************************************+++===---------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::---========+++++++++++++++++++++++++++++++++++********************************************************************************+++++********************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################**+++=======+++****#########################################################################################################**+++===================================================+++++******
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++===--------------------------===========================--------------------------------------------==++++++++++++====---------------------------------------------------------------------------------:::::.......::::--------------------------------------------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%-.....::.:.............................................::::::::----------::::::............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::::::   #@%@@@@%#*##**********++++++++++++++++++++++++++++++++++++++++*+**#**********+++++++++++++++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#*#%#%%%%%%%%%%#######%%####****************++*++++**+++**+++++++++++++++*##%%%%%%%#****#%@@@@@@@@@@%%##%#****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########******************####%#********************************************************************#####**************++++****************+=-=-=+=----------------------------------------------------:-:----:--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=+=--::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------=====-::........................:::........................:::::--:::::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................::::::----------------:....................:---------------====-::::::::::::::::::::::--------::::::::::::::::::...............::::::::::::::::::::::..::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========-----------::::::::........................................................................................           .....::--===+++++++++++++++++++++++++++++++==--:::::--===+++======---::::::::::::--==++++++++==-----:::::::::::::::::::::::::::----------------::::::--------------:::::::----------------------------------==+++****################**++==-------------------------------------------------=====++++++++++++=====---------------------:::::::::::::::::::::::::::::::::::::::----------------------===+++***************************************************+++==----------------------------------------------------------------------------------------------------------------------------------------------------------------::::::----========++++++++++++++++++++++++++++++++++*********************************************************************************++++++*******************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################**+++=======+++***##########################################################################################################**+++===================================================++++*******
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++===---------------------------===========================-------------------------------------------===++++++++++++====---------------------------------------------------------------------------------::::.......:::::--------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%:..:..:...............................................:::::::-----------::::::............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  -%@%@@@@%#*##**********++++++++++++++++++++++++++++++++++++++++++**##*********+++++++++++++++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#*%%%%%%%%%%%%%#######%####*****************++++++**+++***+++++++++++++++*##%%%%%%%*****%@@@@@@@@@@@%#####****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************###%#**********************************************************************#####*************++++****************+===-=+-----------------------------------------------------:-:----:--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::==+=::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------=====-:..........................:::.......................::::::::::::::::::::::::::-:::::------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............:::.:----------------::....................:---------------====-:::::::::::::::::::::::-----:::::::::::::::::...............::::::::::::::::::::....:::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=---=======------------:::::::.......................................................................................             ....::--======++++++++++++++++++++++++++++==--:::::--==========----::::::::::::---==++++++++==-----:::::--::::::::::::::::::::----------------:::::---------------:::::::----------------------------------==++++****##############***++=---------------------------------------------------========++==========---------------------::::::::::::::::::::::::::::::::::::::::----------------------===+++***************************************************+++==-----------------------------------------------------------------------------------------------------------------------------------------------------------------::::----=========+++++++++++++++++++++++++++++++++**********************************************************************************++++++*****************************************************************************************************************************************************************************************************************************************************##########################################################################################################################################################################################################################################################################################################################################################################################################***++=======+++***##########################################################################################################**+++==================================================+++++*******
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--------------------------============================-------------------------------------------==+++++++++++++===----------------------------------------------------------------------------------::::.......:::::--------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@*...:.................................................:::::::-----------::::::............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  +@@@@@@@#####*#*******++++++++++++++++++++++++++++++++++++++++++++*##*********++++++++++++++++++++++++++++++++*#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%#####%#####******************++++***+++**+*++++++++++++++*##%%%%%%#****#@@@@@@@@@@@@%####****#%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%####################################*###############******###%##**********************************************************************#####**************++++***************+=-=-++-----------------------------------------------------:------:---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=+-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=====-:..........................::::.......................:::::::::::::::::::::::::::::...:-------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........::::::-------------=--:::...................:--------------=====-::::::::::::::::::::::::::::::::::::::::::............::::::::::::::::::::::....::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=----======---------------::::................. .....................................................................             ....::--==================+++++++++++++++===--:::::--=========----:::::::::::::---==++++++++===----:::------:::::::::::-----------------------:::::----------------::::::----------------------------------===+++****#############***++==-----------------------------------------------------================--------------------:::::::::::::::::::::::::::::::::::::::::::----------------------===+++***************************************************++===------------------------------------------------------------------------------------------------------------------------------------------------------------------:::----========++++++++++++++++++++++++++++++++++**********************************************************************************++++++*****************************************************************************************************************************************************************************************************************************************************##########################################################################################################################################################################################################################################################################################################################################################################################################***++=======+++***##########################################################################################################**+++=================================================+++++********
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====---------------------------============================------------------------------------------===+++++++++++++===---------------------------------------------------------------------------------:::::.......:::::---------------------------------------------------------------------------------------------------------------------------------------------------------*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@=.......:...........................................::::::::-----------::::::............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::::-#@@@@@@%####**#******++++++++++++++++++++++++++++++++++++++++++++***#*********+++++++++++++++++++++++++++++++++*%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%%%%%%%%%%%%##%######*******************++++**+++**++*+++++++++++++*##%%%%%%%*****%@@@@@@@@@@@%%####****#%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%###%%#################################*********************************######************************************************************************#####**************+++***************+=-==+=-----------------------------------------------------:------:---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------======-:...........................:-:........................::::::::::::::::::::::::::-::....:-------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::::----------------::::....................:-------------======::::::::::::::::::::::::::::::::::::::::...........:::::::::::::::::::::.....:::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====--====--------------::::.............. ........................................................................             .....::-==========================++++++====--:::::--=======----:::::::::::::::---==++++++++===-----:---------::::::::------------------------::::::---------------::::::-----------------------------------==++++*****#########****++==-----------------------------------------------------------=======-----------------------:::::::::::::::::::::::::::::::::::::::::::::---------------------===+++**************************************************+++===------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========++++++++++++++++++++++++++++++++++**********************************************************************************+++++++***************************************************************************************************************************************************************************************************************************************************###########################################################################################################################################################################################################################################################################################################################################################################################################***++=======+++***##########################################################################################################**+++=================================================+++++********
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-----------------------------============================------------------------------------------===+++++++++++++===---------------------------------------------------------------------------------:::::.......::::----------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%-..................................................::::::::-----------::::::............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=#@@@@@@@%######*******++++++++++++++++++++++++++++++++++++++++++++***#**********+++++++++++++++++++++++++++++++++#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*%%%%%%#%%%%%%%%%##%######******************+*++**++++**+*++++++++++++++*##%%%%%%*****#@@@@@@@@@@@@%#####****%%%%%%@@@@@@@@@@@@%%%%%%%%%%########################*****########################********************************######**************************************************************************#####*************+++***************+====+=----------------------------------------------=------:-----::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------=======-:............................:-:.......................:::::::::::::::::::::::::::-::.....::-------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::....................:------------=======:::::::::::::::::::::::::::::::::::::::.......:::::::::::::::::::::::......::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==---=========------------::::............::........................................................................              .....::-====================================-:::::::--====----:::::::::::::::::---==++++++++===----------------:::::::------------------------::::::----------------:::::-----------------------------------====+++******####*****+++===-----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::--------------------===+++**************************************************+++===------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========+++++++++++++++++++++++++++++++++***********************************************************************************+++++++***************************************************************************************************************************************************************************************************************************************************###########################################################################################################################################################################################################################################################################################################################################################################################################***++=======+++***##########################################################################################################**+++================================================+++++*********
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------------------------------============================-----------------------------------------===+++++++++++++====---------------------------------------------------------------------------------::::........::::-----------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%:..:..............................................::::::::-----------::::::............................::::::::::::::::::::::::::::::::::::::::::::::::-::::::-::*@@@@@@@@%#####******+++++++++++++++++++++++++++++++++++++++++++++++**#*********++++++++++++++++++++++++++++++++++*%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*#%%%%%%%%%%%%%%%#%%%######*******************++***+++***+++++++++++++++*###%%%%%#*****%@@@@@@@@@@@@%%###****#%%%%@@@@@@@@@@%%%%%%%############################*****#############################********************************######*************************************************************************####**************+++**************=====+=------------------------------------------------------------:----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::-:::::::::::::------------=====+=--:............................::::.......................:::::::::-::::::::::::::::::::......::--------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::::...................::----------========::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================---------::::...............::.... ................................................................              .....::-====================================-:::.:::--===---::::::::::::::::::::--==++++++++===---------------:::::::------------------------:::::::----------------:::::------------------------------------====++++************+++===---------::---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::--------------------====++**************************************************+++===-----------------------------------------------------------------------------------------------------------------------------------------------------------------------=========++++++++++++++++++++++++++++++++++***********************************************************************************+++++++*************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################################################################################***+++======+++***##########################################################################################################**+++================================================+++++*********
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------------------------------============================------------------------------------------===+++++++++++++====---------------------------------------------------------------------------------::::........::::-----------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@#:.............................................:..:::::::------------::::::............................:::::::::::::::::::::::::::::::::::::::::::::::-:--::-:.-%@@@@@@@%#####*******+++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++*%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%%%%%%%%%%%%%%%#######*****************+++***++++****++++++++++++++*###%%%%#**+**#%@@@@@@@@@@@@%####****#%%%%@%%%%%%%%%%%%%###############################*****#############################************************************#%#************************************************************************#####**************++**************=====+------------------------------------------------------------------------:--::::::::::::::::::::::::::::::::::::::::::::::::::::--::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::-:::::::::::::::--------------====+=--:.............................::::......................::::::--:::::::::::::::::::::::.......:::--------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::::....................:----------========:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================----::::::............    ..::::................................................................              ......:--==================================--::...::-------:::::.:::::::::::::::--===+++++++===---------------:::::::------------------------:::::::----------------:::::-------------------------------------=====+++++*******++++===----------:::--------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::--------------------===++*************************************************+++===------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========++++++++++++++++++++++++++++++++++**********************************************************************************++++=+++*************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################################################################################***+++=====+++****#########################################################################################################***++================================================+++++**********
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---------------------------------============================-----------------------------------------===+++++++++++++====----------------------------------------------------------------------------------::::........::::------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@+.............................................:..:::::::------------::::::...........................::::::::::::::::::::::::::::::::::::::::::::::::::-:-::.-%@@@@@@@%#####*****+++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%%%%%%%%%%%%%%#######******************++***+++******++++++++++++++*###%%%%*++***%@@@@@@@@@@@@%%####****%%%%%%%%%%%%%%%################################******###############################**************#*********************####************************************************************************#####*************++**************======-------------------------------------------------=---:---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::::-::::::::::::--------------=====+=--:..............................:::......................:::::::-::::::::::::::::::::::::.........::--------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------:::::::::..................:---------=========-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========================--::::................    ..::::............................................................               .....:--==================================--::...:::-----:::.........::::::::::--===+++++++===----------------:::::-------------------------:::::::----------------:::::---------------------------------------======+++++++++++===-----------::::-------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------===++*************************************************+++===-----------------------------------------------------------------------------------------------------------------------------------------------------------------------==========++++++++++++++++++++++++++++++++++**********************************************************************************+++===+++************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################################***+++===++++****#########################################################################################################***++===============================================++++++**********
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************++++++++++++++++++++*************************************************************+++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---------------------------------============================-----------------------------------------===+++++++++++++====----------------------------------------------------------------------------------::::........:::-------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%=...............................................:::::::------------::::::...........................:::::::::::::::::::::::::::::::::::::::::::::::::::::. -%@@@@@@@%#####*****+++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*%%%%%%%%%%%%%%%%%######********************+***+++********++++++++++++*####%%%#+++**#@@@@@@@@@@@@@%##%#****#%%%%%%%%%%%%%##################################****#################################**************#***********************#%##***********************************************************************#####*************++************+======--------------------------------------------------------:-:-:--=-----------:::::---:::::::::::::::::::::::::::::::::::::::::::-:--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::-::::::::::::::-------------======+=-::...............................::.......................:::::::::::::::::::::::::::::::..:::.......:----------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::::::::.................::-------==========-::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================--::.......... ..  ....... ....:::........................................................               .....:--==================================--::....::-----::.............:::::::--===+++++++===----------------::::-------------------------::::::::----------------:::::------------------------------------------========+=======-----------::::::------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------===++*************************************************+++===-------------------------------------------------------------------------------------------------------------------------------::--------------------------------------=========++++++++++++++++++++++++++++++++++***********************************************************************************+++====++************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################################***++++==++++***##########################################################################################################**+++==============================================++++++***********
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::--------------------------============================------------------------------------------===++++++++++++=====----------------------------------------------------------------------------------::::.......::::--------------------------------------------------------------------------------------------------------------------------------------------------------------#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%:..............................................:::::::------------::::::..........................::::::::::::::::::::::::::::::::::::::::::::::::::::.  -%@@@@@@@%#####****++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++*@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%%%%%%%%%%%%%%####**************************+++********++++++++++++*####%%#*++++*%@@@@@@@@@@@@%###%#****#%%%#%%%%%%#####################################***##################################***************************************#%#***********************************************************************#####**************+************+======-------------------------------------------::------=--------:--=-----------:::--------::::::::::::::::::::::::::::::::::::::::::-=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:-:::::::::::::::-------------=====++--:.........................................................:::::::--::::::::::::::::::::::..............::----------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::------------------:::::::::.................:-------==========--------:::::::::::::::::::::::::::::::::::::::::::...........:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================-=====-::....... ...... . .....  ...........................................................                 ....:--==================================--::....::----:::................:::::--===++++++===----------------:::--------------------------:::::::::---------------::::---------------------------------------------===========--------------::::::::---------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------===++*************************************************++====-----------------------------------------------------------------------------------------------------------------------------:::::------------------------------------==========++++++++++++++++++++++++++++++++++***********************************************************************************++=====++***********************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################################################################################****++++++++****##########################################################################################################**+++=============================================++++++************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::--------------------------============================-----------------------------------------===+++++++++++++=====---------------------------------------------------------------------------------:::::.......::::--------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@#:.............................................:::::::------------::::::..........................:::::::::::::::::::::::::::::::::::::::::::::::::..   -@@@@@@@%######*****++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++*@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*%%%%%%%%%%%%%%%%%%###**********************++*++++*********++++++++++++*###%%%*++++*%%@@@@@@@@@@@%%####*****%%%%#################################################################################****************************************#%#***********************************************************************#####*************+************+======------------------------------------------------------------:--=-----------------------:::::::::::::::::::::::::::::::::::::-::-:-=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::::::::::--------------=====++-::..........................................................:::::::::::::::::::::::::::::::.:.............::-----------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::--------------------::::::::::...............:------===========--------:::::::::::::::::::::::::::::::::::::..............::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================---===-=======--:.   ...  ............ ...   ....................................................                 ....:--==================================--::....::----::...................:::--====+++++===-----------------::--------------------------:::::::::---------------::::---------------------------------------------------==-----------------::::::::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------===++************************************************+++===----------------------------------------------------------------------------------------------------------------------------::::::::-----------------------------------==========++++++++++++++++++++++++++++++++++***********************************************************************************++======++**********************************************************************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################################################################################################################################################################################****++++++*****#########################################################################################################***+++============================================++++++*************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::--------------------------============================-----------------------------------------===+++++++++++++====----------------------------------------------------------------------------------:::::.......::::---------------------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@+:............................................::::::------------:::::::..........................::::::::::::::::::::::::::::::::--::----::::::..     -@@@@@@@%######*****+++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++#@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%####**********************++*+++**********+++++++++++*####%%#*++++#%%@@@@@@@@@@%%%####****#%%%##################################################################################*****************************************###***********************************************************************#####*************************+======---------------------------------------------------------------=-----------------------::::::::::::::::::::::::::::::::::::::::::-===-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::::::::::-------------======+=--:..........................................................::::::::::::::::::::::::::::::::.................::----------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::----------------------:::::::::............:::-----============--------::::::::::::::::::::::::::::::::::..............::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================--===========--:.   ............. ....... ...................................................                  ...:--==================================--::...:::----::....................:::--====+++====-----------------::--------------------------:::::::::----------------:::----------------------------------------------------------------------:::::::::---------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------===++************************************************+++===---------------------------------------------------------------------------------------------------------------------------:::::::::----------------------------------==========+++++++++++++++++++++++++++++++++++***********************************************************************************++==--==++**********************************************************************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################################################################################################################################################################################*******+******#########################################################################################################***+++============================================++++++**************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::-------------------------=============+===============-----------------------------------------===+++++++++++++====----------------------------------------------------------------------------------::::........::::---------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@%=:..........................................:::::::------------:::::::..........................::::::::::::::::::::::::::::::----:-----:::::.      =@@@@@@@%#####***+*+++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*#%%%%%%%%%%%%%%%%%###***********************+++++***********+++++++++++*####%#*++++*%%@@@@@@@@%%%%%####*****%%%####################***############################################################**********************************+*******%#************************************************************************####*************************+======-=-----------------------------------------:----------:--:-----=----------:------------::::::::::::::::::::::::::::::::::::-:-::---===-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=-::::::::::::::::-------------======++=-::...........................................................::--::::::::::::::::::::::::::::...................::--------------------------------------------------------::::::::::::::::::::::::::::::::::::::-----------------------:::::::::::..........:::----=============-------::::::::::-::::::::::::::::::::................::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================================-=--===--:.. .. ............. .....................................................                   ...:--==================================--::...:::---:::.....................::--===========-----------------::--------------------------:::::::::----------------:::----------------------------------------------------------------------::::::::::--------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------===++***********************************************+++====--------------------===----------------------------------------------------------------------------------------------::::::::::::::::---------------------------------==========+++++++++++++++++++++++++++++++++++**********************************************************************************+++==--==++*********************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################*************#########################################################################################################***+++============================================++++++**************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------------------------------============================------------------------------------------===+++++++++++++===-----------------------------------------------------------------------------------::::........::::----------------------------------------------------------------------------------------------------------------------------------------------------------------#@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%=:.........................................::::::-------------::::::::.........................:::::::::::::::::::::::::::::--::--:-:--:-:.     :+#@@@@@@@%#####****++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%####**********************+++++**************++*++++++#####%*++++*#%@@@@@@%%%%%%%#####****#%%%##############***********##########################################################****************************+++++++++******%#***********************************************************************#####************************=======-=--=--------------------------------------------------:-------==--------:------------:::::::::::::::::::::::::::::::::::::::::::--====-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::==:::::::::::::::::--------------=====++=:-::..........................................................::::::::-:::::::::::::::::::::::......................:------------------------------------------------------------:::::::::::::::::::::::::::::::---::--------------------:::::::::::::::::::::::-==============----------:-------:::::::::::::::::..................::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============================================-======--:..    ...  ..........  ..............................................                   ...:--==================================--::...::----::......................:::---========-----::-----------:::::-----------------------::::::::----------------:::------------------------------------------------------------------------::::::::::--------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------===+++*********************************************++++===-------------------=======-----------------------------------------------------------------------------------------:::::::::::::::::::--------------------------------==========+++++++++++++++++++++++++++++++++++************************************************************************************+==----==++**********************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################***********##########################################################################################################**+++===========================================++++++****************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------------------------------============================------------------------------------------===+++++++++++++===-----------------------------------------------------------------------------------::::.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#=::.......................................::::::-------------::::::::.........................::::::::::::::::::::::::::---:---:--:-:--:.    -*#%@@@@@@@%####*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++##@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**********************+++****************++++++++*####%*+++++*%%@@@@%%%%%%%%%####****#%%%##############************##########################################################***************************+++++++++++*****#%************************************************************************#####***********************=========-===--------------------------------------------------------===---------------------::::::::::::::::::::::::::::::::::::::::::::--====-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:-=-:::::::::::::::::-------------======++-:::::.........::...............................................::::--:::-:::::::::::::::::::::........................::-----------------------------------------------------------------::::::::::::::::::::::---:::--------------------::::::::::::::::::::::--============------------------::::::::::::::....................::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================================--==---...  .......... ..................................................                   ...:--==================================--:::..::----::.......................::---=======----:::::----------:::::-----------------------:::::::::----------------::------------------------------------------------------------------------::::::::::---------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------===+++********************************************++++====-------------------=======---------------------------------------------------------------------------------------:::::::::::::::::::::--------------------------------==========+++++++++++++++++++++++++++++++++++***********************************************************************************++==----==++**********************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################################################################********##########################################################################################################***+++==========================================++++++*****************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++****************************++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----------------------------=============================------------------------------------------===+++++++++++++===-----------------------------------------------------------------------------------::::.......::::------------------------------------------------------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%+=:..:....................................::::::-------------:::::::::........................:::::::::::::::::::::::::::::--::-::----.    =***%@@@@@@@%####****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++##%@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*********************++++*****************+++++++*#####+++++*#%%@%%%%%%%%%%%#####****%%%%##############***********###########################################################*************************++++++++++++++*****##************************************************************************#####*********************+===========+=--------------------------------------------------------=====-------------------:::::::::::::::::::::::::::::::::::::::::::::-===+=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::==-::::::::::::::::-------------======++=-::::::........:::.............................................:::::::--:::::::::::::::::::::::............................:------------------------------------------------------------------::::::::::::::::---::::------------------------::::::::::::::::----============----------------::::::::::::.....................::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================--------=====--:..   .......................................................                    ...:--==================================--:::::::----::........................::----====----:::::::---------::::------------------------:::::::::------------------------------------------------------------------------------------------:::::::::::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------===+++*******************************************+++++====------------------=========-------------------------------------------------------------------------------------:::::::::::::::::::::::-------------------------------=========++++++++++++++++++++++++++++++++++++***********************************************************************************++==-----=++***************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++========================================+++++++******************
********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++****************************+++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---------------------------=============================------------------------------------------==+++++++++++++====-----------------------------------------------------------------------------------::::.......::::------------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%+=:......................................::::::-------------:::::::::::......................:::::::::::::::::::::::---:------:-:--:    -**+*%@@@@@@@%%%##****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++##%@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*******************++++*******************+++++*#####*+++++#%%%%%%%%%%%%%%#####****#%%%#######*##***###**********###########################################################************************+++++++++++++++++**+*%#************************************************************************#####********************+=========-=+=--------------------------------------------------------=====-------------------:::::::::::::::::::::::::::::::::::::::::-:::--=====-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:-=-:::::::::::::::::-------------======++=-:::::::........::...............................................::::::::::::::::::::::::::::::..............................::------------------------------------------------------------------::::::::::::----::-----------------------------::::::::----------=========----------------::::::::::......................::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============================================---==------=---=--:...     .................................................                    ...:--==================================--::::::-----::........................::------------:::::::---------::::------------------------:::::::::-------------------------------------------------------------------------------------------:::::::::::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------===+++******************************************+++++=====------------------=========-----------------------------------------------------------------------------------::::::::::::::::::::::::::------------------------------=========+++++++++++++++++++++++++++++++++++************************************************************************************++==-----==+****************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++========================================+++++++*******************
**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++******************+++++++++++++++++++++++++++++++++++++++++++++*******************************+**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------------=------------============================------------------------------------------===+++++++++++++===------------------------------------------------------------------------------------::::.......::::------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@#+=::....................................:::::--------------:::::::::::::::::::.:::::::......:::::::::::::::::::::---------::--:-:    -+*++*%@@@@@@@%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++###%@%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########******************+++*********************+++++*####*+++++*%%%%%%%%%%%%%%###%#****#%%%%#######*#####************###########################################################************************+++++++++++++++++++++**%************************************************************************#####********************+==========++=--------------------------------------------------------======------------------:::::::::::::::::::::::::::::::::::::::::::::--======-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=-:-::::::::::::::--------------======++=-::::-::.................................................:::.....::::::::::::::::::::::::-:::::.................................::--------------------------------------------------------------::::::::--:--------------------------------------------------------=======----------------::::::::......................:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============-----=============---=------------------------:..   ..............................................                     ...:--==================================---:::::-----::........................::-----------::::::::---------:::::----------------------::::::::::-------------------------------------------------------------------------------------------::::::::::::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------===+++*****************************************++++======-------------------==========---------------------------------------------------------------------------------::::::::::::::::::::::::::::----------------------------=========++++++++++++++++++++++++++++++++++++************************************************************************************++==-----==++***************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****++++======================================++++++++********************
************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====------------+-----------=============================------------------------------------------===+++++++++++++===------------------------------------------------------------------------------------::::......:::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#+=:...................................::::::-------------:::::::::::::::::::::::::::.......::::::::::::::--------------------:.   =**+++*#%@@@@@%%%%%#*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++#%%@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########****************+++++********************++++++*###*+++++*#%%%%%%%%%%%%#######****%%%%##############***********###########################################################************************++++++++++++++++++++++++##************************************************************************#####*******************+========-=++=----------------------------------------------------:----===-=------------------::::::::::::::::::::::::::::::::::::::::::::::--=+====-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:=---:::::::::::::::-------------======+++-::::::-:...............................................::.........::-:::::::::::::::::::::::::::...................................:::----------------------------------------------------------:------------------------------------------------------------------======--------------:::::::......................::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===--=---------------====-------------=------------------=---::..   .........................................                     ...:--===================================--:::::-----::........................:::----------:::::::::--------:::::::::------------------::::::::::-------------------------------------------------------------------------------------------::::::::::::::--------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------===+++****************************************++++=======-------------------====++====---------------------------------------------------------------------------------::::::::::::::::::::::::::::-------------------::::-----========+++++++++++++++++++++++++++++++++++++************************************************************************************++==------=++***************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***+++++====================================+++++++++*********************
*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-----------+-----------=============================------------------------------------------===+++++++++++++===------------------------------------------------------------------------------------::::......:::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%*=:.................................:::::::-------------:::::::....:::::::::::::::.......::::::::::::::----------------:--:.   =***++++*%@@@@@%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++#%@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***************++++**********************+++++*####*++++*#%%%####%%%#########****#%%%%#########**######********##########################################################**********************+++++++++++++++++++++++==++*%*************************************************************************#####******************===========++=---------------------=------------------------------------==-=------------------::::::::::::::::::::::::::::::::::::::::::::::--======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::-:::-=---:::::::::::::::-------------======++=-:::::::::............................................:............:::::::::::::::::::-::::::::-:.......................................::-------------------------------------------------------------------------------------------------------------------------======-----------:::::::.......................::------------------------------------------------------------------------------------------------------------------------------------------------::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=----::..........................................                     ...:--===================================--::::------::........................:::---------::::::::::--------::::::::::::::-------------:::::::::::------------------------------------------------------------------------------------------::::::::::::::::-------------------------------------------========---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------===+++***************************************++++=====----------------------===++++===--------------------------------------------------------------------------------::::::::::::::::::::::::::::::-----------------:::::----========+++++++++++++++++++++++++++++++++++++*************************************************************************************++==--::--==+**************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****++++===================================+++++++++***********************
**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----------=*=----------=============================------------------------------------------===+++++++++++++===------------------------------------------------------------------------------------::::......::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%*-:................................:::::::-------------:::::::........::::::::::........::::::::::::::--------------:--:.   -+**+++++*#@@@@@%%%@%*++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++*********+++++++++++++++++++++++++++++++++++++++++++*%@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++***********************+++++*###*+++++#####################****%%%%%########*####**##******############################################################*********************+++++++++++++++++++++++===+++##************************************************************************#####******************===========+*=---------------------=---------------------------------:--====------------------::::::::::::::::::::::::::::::::::::::::::::::--=======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=----:::::::::::::::-----------=---===+++=-::::::::...........................................:...............::::::::::::::::::-:::::::::::.........................................::----------------------------------------------------------------------------------------------------------------===========---------::::::........................::------------------------------------::::::::----------------------------------------------------------------------------------------------------:::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::....................................                     ...:-====================================---::-------::........................:::---------::::::::::--------:::::::::::::::------------:::::::::::------------------------------------------------------------------------------------------:::::::::::::::::-----------------------------------------==========--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------===+++**************************************++++===-------------------------===++++===-------------------------------------------------------------------------------:::::::::::::::::::::::::::::::----------------::::::---=========+++++++++++++++++++++++++++++++++++++*************************************************************************************++==--::--==++*************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***+++++=================================++++++++++************************
***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++****************************+++++++++++++++++++++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---------+*+---------==============================-----------------------------------------====+++++++++++++===-----------------------------------------------------------------------------------:::::......::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@#=:..:............................::::::--------------::::::...........................:::::::::::::------:-:--:-:---.   =**+++++++*#@@@@@%%%@%*++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++***********+++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*#########*************+++************************++*++*###*+++++*#################%##****#%%%%##########*#######***###############################################################************************++++++++++++++++++++====++*#*************************************************************************#####****************+==========++*+----------------------=------------------------:---:----:--===------------------:::::::::::::::::::::-::::::::::::::::::::::::-:-=======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::-------------======+++-:::::::::.......................................::..................:::::::::::::::::::::::::::-::............................................::--------------------------------------------------------------------------------=======---------------===============---------::::::::::....................::---------------------------------:::::::::::::::::-------------------------------------------------------------------------------------------::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:....  .. ...  ...........   ....                     ...:-====================================------------::........................:::---------:::...::::--------::::::::::::::::-----------:::::::::::-------------------------------------------------------------------------------------------::::::::::::::::::-------------------------------------=============--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------===++++************************************++++===--------------------------===+++++===------------------------------------------------------------------------------::::::::::::::::::::::::::::::::--------------::::::----========++++++++++++++++++++++++++++++++++++++*************************************************************************************++==--:::-==++*************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++++==============================+++++++++++*************************
****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---------+#+---------=============================------------------------------------------====+++++++++++++===-----------------------------------------------------------------------------------:::::......::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@#=:..............................::::::--------------::::::...........................:::::::::::::----------:-:--:  .=**++*++++++#@@@@@%%@@#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++**********++++++++++++++++++++++++++++++++++++*++**%@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**##########***********+++***************************+++*##*+++++*########%###########****#%%%%%###################**##############################################################************************+++++++++++++++++++++=====++***************************************************************************####****************+==========++*+----------------------=------------------------:---:----::--==------------------:::::::::::::::::::::-::::::::::::::::::::::::-:-=======---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::--------------=====+++=-::::::::............................................................:::::-:::::::::::::::::-:::--:................................................::---------------------------------------------------------------------------=============--======================-----::::::::::......................::--------------------------------::::::::::::::::::::::::------------------------------------------------------------------------------------::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=--:...      .. ..    ........                       ...:--===================================------------::.........................::---------:::....:::--------::::::::::::::::-----------:::::::::::-------------------------------------------------------------------------------------------::::::::::::::::::------------------------------------=====++++++====-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------===++++***********************************++++===---------------------------===+++++===-----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::--------------:::::----=========++++++++++++++++++++++++++++++++++++++*************************************************************************************++==-::::--=++*************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++++++=========================++++++++++++***************************
****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--------*#*---------=============================------------------------------------------====+++++++++++++===-----------------------------------------------------------------------------------::::.......::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%=:.............................::::::--------------::::::...........................:::::::::::::-------:-:-:-.   =***+++++++++#@@@@@@%@@#+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++**********++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**#############*******++++***************************+*+*##*+++++*####################*****%%%%%###################################################################################*************************++++++++++++++++++++========****************************************************************************####***************+==========++++----------------------==---------------------------:--==-:--==------------------:::::::::::::::::::::-:::::::::::::::::::::::::---======----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::-------------======+++=-:::::::..............................................................:-::-:::::::::::::::::::::::::...................................................::---------------------------------------------------------------------====================================-----::::::::::::::::................::---------------------------------::::::::::::::::::::::::::-------------------------------------------------------------------------------::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::...       ...    ......                    ...:--====================================-----------::.........................::---------:::....:::---------::::::::::::::::---------::::::::::::-------------------------------------------------------------------------------------------:::::::::::::::::::----------------------------------====++++++++++===------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------===++++***********************************+++===----------------------------===+++++===----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::-------------:::::----========+++++++++++++++++++++++++++++++++++++++*************************************************************************************++==-::::--==+*************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****++++++++++++++=============+++++++++++++++*****************************
*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++*********++++*****************************++++++++++++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------=*#*--------==================++==========------------------------------------------====+++++++++++++===-----------------------------------------------------------------------------------::::......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%@%=:...........................::::::--------------:::::::...........................:::::::::::::-------::::.  .=+++++++++++++#@@@@@@@@@*+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++*********+++++++++++++++++++++++++++++++++++++*+*%@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**##############*****++++******+*********************+*+*#*++++++#####################****#%%%%%###################*##############################################################*************************+++++++++++++++++++++========+****************************************************************************####**************==========+++++----------------------==---------------------------:--==-::--=--------------:---:::::::::::::::::::::::::::::::::::::::::::::::---=======----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::-------------======+++-::::::................................................................:::::::::::::::::::::::-:::-::.................................................  ....::---------------------------------------------------------------===================================-----::::::::::::::::........:::....:::---------------------------------::::::::::::::::::::::::::::::------------------------------------------------------------------------::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=-----::.....         ..                     ...:--====================================-----------::.........................::---------:::.....:::--==----::::::::::::::::::------::::::::::::::------------------------------------------------------------------------------------------:::::::::::::::::::----------------------------------===+++++++++++====-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------====+++**********************************+++===-----------------------------===+++++===----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::------------:::::----=========+++++++++++++++++++++++++++++++++++++++*************************************************************************************++==-:::::--=++************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****+++++++++++++++++++++++++++++++++++++++*******************************
*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++++++++++++++++++++********+++++++++****************************++++++++++++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------+###=-------==================+==========-------------------------------------------===++++++++++++++===-----------------------------------------------------------------------------------::::......::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%-.:.........................::::::--------------:::::::...........................::::::::::::-------:-:   .=++++++++++++++#@@@@@@@@%*++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++**********++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################**++++********+**********************+*##*+++++#%###################****#%%%%%####################*#############################################################**************************+++++++++++++++++++===========+****************************************************************************####*************==========+*+++=---------------------==---------------------------:--===-::-==-----------------:::::::::::::::::::::::::::::::::::::::::::--:-----======--=--::::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::-------------=====++++-:::::.................................................................:::::::::::::::::::::::::::-::..................................................... .....::--------------------------------------------------------==================================-----:::::::::::::::::::::::::::::::::::----------------------------------::::::::::::::::::::::::::::::::-----------------------------------------------------------------:::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::............                  ...:--=====================================----------::.........................::---------:::.....:::--==----::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------::::::::::::::::::::-------------------------------====+++++++++++++===-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------====++++*********************************+++===-----------------------------===++++++==----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::----------::::::----=========+++++++++++++++++++++++++++++++++++++++*************************************************************************************++==-:::::--=++***********************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****++++++++++++++++++++++++++++++++++++*********************************
******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++******+++++++++++++***************************+++++++++++++++++++++++++++++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----+###+-------=============================-------------------------------------------===++++++++++++++===-----------------------------------------------------------------------------------::::......::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@#-.:.......................:::::::--------------:::::::...........................::::::::::::--------:  :==-+++++++*+++++#@@@@@@@@%*+*++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++*********++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################**++++*********+**************************+++++*%%#######%#######%##*****%%%%%##################################################################################**************************+++++++++++++++++==============++***************************************************************************####************+==========+**++=---------------------===-----------------------:--:-====--:--------------------:::::::::::::::::::::::::::::::::::----------:-:---======---=-:::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::-------------======+++=-:::::..................................................................::--::::::::::::::--:::::::::.........................................................   ....::-------------------------------------------------=============+++++++=============------::::::::::::::::::::::::::::::::::-----------------------------------::::::::::::::::::::::::::::::::::-----------------------------------------------------------::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==---------:::::...............:----=====================================---------::.........................:::--------:::.....:::--==----::::::::::::::::::::::::::::::::::::::--------------------------------------------==---------------------------------------------::::::::::::::::::::-----------------------------====+++++++++++++++==------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------====++++*********************************+++==------------------------------===++++++===---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::---------:::::::---==========+++++++++++++++++++++++++++++++++++++++*************************************************************************************++==--::::--=++*********************************************************************************************************************************************************************************************************####**********************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******++++++++++++++++++++++++++++++++***********************************
##****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++*++++++++++++++++++****************************++++++++++++++++++++++++++++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----*###+------==============================-------------------------------------------===++++++++++++++===-----------------------------------------------------------------------------------::::......::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%@@%*:........................::::::---------------::::::............................::::::::::::-------: -++--+++++*+++++++#@@@@@@@@@*+*+*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*********++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***+++*************************************+++++*%%###############%##*****%%%%%%#################################################################################***************************++++++++++++++==================++***************************************************************************####***********+=========+*+*++=----------------------===---------------------------=====-::-------------------::::::::::::::::::::::::::::::::----------::::::----======---=-::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::::::------------======++++=-:::::..................................................................::-:::::::::::::-:::::::::::::.............................................................      ...::---------------------------------------=========++++++++++++++=========---------::::::::::::::::::::::::::::::---------------------------------------::::::::::::::::::::::::::::::::::---------------------------------------------------------::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=-----------------=--=--------=============================-------::.........................:::--------:::.....:::--===---::::::::::::::::::::::::::::::::::::::-------------------------------------------====--------------------------------------------::::::::::::::::::::----------------------------====++++++++++++++++==------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------====++++*********************************++===------------------------------===++++++===--------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::-------:::::::----==========+++++++++++++++++++++++++++++++++++++++*************************************************************************************++==--::::--==+*******************************************************************************************************************************************************************************************************########********************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********++++++++++++++++++++++++***************************************
###***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++++++++++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----*###*------==========+===================-------------------------------------------===++++++++++++++===-----------------------------------------------------------------------------------::::.....:::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%*:.......................::::::---------------::::::............................::::::::::::--------=+++++++++++++++++*%@@@@@@@%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*********+++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**+++**************************************+*+++*%%%#%#####%#########*****#%%%%%#################################################################################*****************************++++++++++++===================++*#**************************************************************************####**********==========+*+**+=----------------------===------------------------:--=====--:-------------------:::::::::::::::::::::::::::::-------------:::::-----======---==-:::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::::::-------------======++++-::::::..................................................................:::::::::::::::::::::::::::--:..............................................................             ..:--------------------------------=====++++++++++++++++++++=====-----------:::::::::::::::-----------------------------------------------------::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===----=------=---===================================-----:.........................:::---------::.....:::--===---::::::::::::::::::::::::::::::::::::::-------------------------------------------====--------------------------------------------::::::::::::::::::::---------------------------====+++++++****++++++==------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------====++++**+*****************************+++===-----------------------------====++++++===--------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::------::::::::----==========+++++++++++++++++++++++++++++++++++++++*************************************************************************************++==--::::--==+******************************************************************************************************************************************************************************************************##########*******************************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************++++++++++++++++********************************************
######**##********+++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++*******************************++++++++++++++++++++++++++************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----*###*------=============================--------------------------------------------===++++++++++++++===-----------------------------------------------------------------------------------::::.....::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%+:......................::::::---------------:::::..............................::::::::::::-:---:=+++++++++++++++++*%@@@@@@@%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***+****##***********************************++*+*#%%%%#####%#########*****#%%%%%%################################################################################*****************************+++++++++++======================++#***************************************************************************####*********==========++**++=----------------------===----------------------:-:--======-::-------------------::::::::::::::::::::::::::::----------------:-:----=======---==-::::::::::::::::::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------:::::::::::::::-------------======+++=-:::::::.................................................................:::::::::-::::::::::::::::::::.............................................................                      ..::-------------------====+++++++++++++++++++++=======------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::--::----------------------------------------------::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=----=======================================---::.....................::----------:::....::---===---:::::::::::::::::::::::::::::::::::::::------------------------------------------====--------------------------------------------::::::::::::::::::::--------------------------====++++++++*****+++++===-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::--:--------====++++********************************+++===-----------------------------===++++++++==--------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::---:::::::::---===========+++++++++++++++++++++++++++++++++++++++*************************************************************************************+++=--:::::-==++****************************************************************************************************************************************************************************************************#############****************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************
######*************++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---=*###*------=============================--------------------------------------------===++++++++++++++===-----------------------------------------------------------------------------------:::::....::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@#=:..:.................:::::::--------------::::::..............................::::::::::::--:--:+++++++++++++++++*%@@@@@@@@*+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############********#####*************************####*********#%%%#%%###%%#####%%#*****#%%%%%%%################################################################################*****************************+++++++++++======================++*#**************************************************************************#####*******+=========+****++=-----------------------==----------------------:----======--:-------------------:::::::::------:::::::::::::------------------:-----======---==-:::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::::::::------------======++++=::::::::.................................................................::::::::::::::::::::::::::::-::............................................................                               .::------===++++++++++++++++++++++===========------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::----------------------------------------------::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================================-=---------::.........:::---------::.....::---===---:::::::::::::::::::::::::::::::::::::::------------------------------------------=====-------------------------------------------::::::::::::::::::::-------------------------====++++++*********++++===-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::--:--------===+++++********************************+++==------------------------------===++++++++===-------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::----===========+++++++++++++++++++++++++++++++++++++++**************************************************************************************++=--:::::-==++***************************************************************************************************************************************************************************************************###############***************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************
#######************+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--+#####=----==============================--------------------------------------------===+++++++++++++====-----------------------------------------------------------------------------------:::::....::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@*=:....:..............::::::---------------::::::..............................:::::::::::-:-:---++++++*+++++++++*%@@@@@@@@*+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#*****+++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########********#########******************##########********#%%%##%%##%%########*****#%%%%%%%###############################################################################*******************************++++++++++========================++#***************************************************************************####*******+=========+*****++-----------------------===--------------------------======--::-------------------:::::------------:::::::::-------------------::----=======--===-::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::::::::------------======++++-:::::::::................................................................::-::::::::::::::::::::::::-:-:...........................................................                                    .:-=+++++++++++++++++++++=============--------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::---------------------------------------::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================================================------------------:::....::---===---:::::::::::::::::::::::::::::::::::::::------------------------------------------=====-------------------------------------------::::::::::::::::::::------------------------====++++++**********++++===-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::--:--------===+++++********************************+++==------------------------------===+++**+++===-------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::----===========+++++++++++++++++++++++++++++++++++++++**************************************************************************************++=--:::::--=++**************************************************************************************************************************************************************************************************##################*************************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************************
########***********+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++**********************************+++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--+#####+----=============================---------------------------------------------===+++++++++++++====-----------------------------------------------------------------------------------:::::...:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%+-:.................:::::::---------------::::::...............................::::::::::-:-:--=*++++++++++++++*%@@@@@@@@*+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#*****+++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********##############***************##########********#%@%%#%%##%%########*****#%%%%%%%###############################################################################********************************+++++++++=========================++##***************************************************************************####******==========******++-----------------------===---------------=----------=======--:--------------------------------------::::::------------------:-::----=======--====-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::::::::-------=----======++++=-:::::::::................................................................::::::::::::::::::::::::-------.........................................................                                  .-==++++++++++++++++++++================---------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::---------------------------------------::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===--=========================================================================+++++++++++++++++++++====-:::::--====---:::::::::::::::::::::::::::::::::::::::------------------------------------------=====--------------------------------------------:::::::::::::::::::------------------------===+++++++*********+++++===-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::--:--------===+++++********************************++===------------------------------===+++**+++===----------------------------------------===------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::---===========++++++++++++++++++++++++++++++++++++++++**************************************************************************************++=--:::::--=++**************************************************************************************************************************************************************************************************###################************************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************************
########***********+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++**********************************+++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====*#####+----=============================---------------------------------------------===+++++++++++++===------------------------------------------------------------------------------------:::::...:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@#+-.................::::::---------------:::::::................................:::::::::::-::-+++*+++++++++*+*%@@@@@@@@#+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*****+++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**********##%##################*********###########********%%@@%##%%%%%%#######*****#%%%%%%%%##############################################################################********************************++++++++=+=========================++*#***************************************************************************#####*****=========+******++=----------------------===---------------=----------========-::---------------------------------------:::-------------------:-::-----=======-=====-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::::::::------=-----======++++=::::-::::::...............................................................::::::::::::::::::-------------:.................................::....................                               .-++++++++++++++++++++====================----------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::------------------------------------::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++=-::--====---:::::::::::::::::::::::::::::::::::::::------------------------------------------=====--------------------------------------------:::::::::::::::::::------------------------==++++++***********+++++==-------------::::::::::::::::::::::::::::::::::::::::::::::::::::----------====++++********************************+++===------------------------------===+++***++===---------------------------------------=====----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::----==========+++++++++++++++++++++++++++++++++++++++++**************************************************************************************++=--:::::--=++*************************************************************************************************************************************************************************************************####################************************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************************
##########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++*********************#####********++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====*#####+----=====================+======----------------------------------------------===+++++++++++++===------------------------------------------------------------------------------------:::::..:::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@#=:...............:::::::---------------::::::.................................::::::::::::::-*+++++++++++++*#@@@@@@@@@#*+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##****+++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***********##%%%%%%######################*#############*******%%%@%%#%%%%%%###%###*****#%%%%%%%%#############################################################################**********************************++++++++============================++##***************************************************************************#####***+=========+*******+=----------------------===---------------=---------=========--:---------------------------------------------------------------:::----=======-======-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::::::::------------======+++++-:::::::::::.............................................................:..::-::::::::::-----------------:.............................:::::....................                           .:=++++++++++++++++++=======================------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::------------------------------::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====--==============================++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++******+=---====---:::::::::::::::::::::::::::::::::::::::------------------------------------------======-------------------------------------------::::::::::::::::::------------------------===+++++************+++++==-------------::::::::::::::::::::::::::::::::::::::::::::::::::::----------===+++++********************************+++===------------------------------===+++***++===---------------------------------------======---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::---===========+++++++++++++++++++++++++++++++++++++++++***************************************************************************************+==-:::::--==+*************************************************************************************************************************************************************************************************#####################***********************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************************
##########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++*******************########*******++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===*#####*-----===========================----------------------------------------------===+++++++++++++===-------------------------------------------------------------------------------------::::.::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%+=:.:............::::::----------------::::::..................................::::::::::::-=*++++++++++++*#@@@@@@@@@@@%*+*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*****+++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##********###%%%%%%%%%%%#################################******#%%@@@%##%%%%%#######*****#%%%%%%#%%###########################################################################************************************+++++++=============================++*%****************************************************************************####***+=========********+=----------------------===---------------=---------=========--::----------------------------------------------------::::::::-::::-----======-======--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::::::::------------======++++=-::::::::::::..........................................................:....:::::::------------------------..........................::::::::...................                        :-=++++++++++++++++=====-------===============-------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::-------------------------:::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================+++++++++++++++++++++++++**++++++++********++++++++*****+*************+*******+****++++++**++++++++++++++++**+******+=-====---:::::::::::::::::::::::::::::::::::::::-----------------------------------------=======-------------------------------------------::::::::::::::::::------------------------===++++*************+++++==-------------::::::::::::::::::::::::::::::::::::::::::::::::::::---------====+++++*******************************+++===-----------------------::------===+++***++===---------------------------------------======---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::----==========++++++++++++++++++++++++++++++++++++++++++***************************************************************************************+==--:::::-==++***********************************************************************************************************************************************************************************************######################***********************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************************
#########***********++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++******************##########*******+++++++++********+************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===*#####*-----==========================-----------------------------------------------===+++++++++++++===-------------------------------------------------------------------------------------:::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%@@@@%+=:.............::::::---------------:::::::..................................::::::::::::-+*+++*++*+++++#%@@@@@@@@@@@@%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*****++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*#######%%%%%%%%%%%%%%%###############################******#%%%@@@%##%%%%######******#%%%%%%%%%###########################################################################*************************************+++++++=============================+++##****************************************************************************###***=========+*********=----------------------===-------------------------==========-::----------------------------------------------------:::::::::::::-----======-=======--::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::::::::----------=-======+++++-::::::::::::::...:...........................................................:-----------------------------.......................::--::::::...................                    .:=+++++++++++++++++==------------=============----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++**************************************************+++*+++++++++++++++++++************+=====---:::::::::::::::::::::::::::::::::::::::-----------------------------------------=======-------------------------------------------::::::::::::::::::-----------------------===++++***************++++==-------------::::::::::::::::::::::::::::::::::::::::::::::::::::---------===+++++********************************+++===----------------------:::------===++****++===---------------------------------------======---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::----==========++++++++++++++++++++++++++++++++++++++++++***************************************************************************************+==--:::::-==++***********************************************************************************************************************************************************************************************######################***********************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*##******************************************************************
##########**********++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++****************##########*******++++++***********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*#####*-----=========++===============----------------------------------------------===++++++++++++++===-------------------------------------------------------------------------------------::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@#==:..:........::::::----------------::::::....................................:::::::::::-**++*+++*+++**%@@@@@@@@@@@@@@%*++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##***++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%#####%%%%%%%%%%%%%%%%%%%##############################****#%%@@@@@%#%%%%######*****#%%%%%%%%%%%################################%%%%%%####################################**************************************++++++===============================++*%*****************************************************************************##***=========+*********=-----------------------==-------------------------==========--:----------------------------------------------------:::::::::::::-----=======-=======-::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::::::::------===-========+++++-:::::::::::::::..............................................................:-----------------------------:...................:------::::.....................                .-=++++++++++++++++==------------------=========-----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++**+***********************************************************************++*****************+====---:::::::::::::::::::::::::::::::::::::::-----------------------------------------=======-------------------------------------------::::::::::::::::::-----------------------===++++**************++++===-------------::::::::::::::::::::::::::::::::::::::::::::::::::::---------===++++*********************************++====-----------------------:::------==+++***+++==---------------------------:::::::-----=======--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::----==========+++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--=++***********************************************************************************************************************************************************************************************#######################***********************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************************************************
##########**********++++++++++++++++++++++++++++++++++++++++++++++++++++*********##************+++++++++++++++++++++++++++++++++++++++++++++++++++***********#**############******+++++************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++######*-----==========================----------------------------------------------===++++++++++++++===-------------------------------------------------------------------------------------::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%*=-:..:.......::::::----------------::::::.....................................::::::::::=*++++++++++**%@%@@@@@@@@@@@@@@%+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##***++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################**#%%%@@@@%%#%%%#######****#%%%%%%%%%%%###########################%%%#############################################**************************************+++++================================++*##****************************************************************************#***+=========**********+-----------------------==-------------------------==========---:----------------:----------------------------------:::::::::::::-----=======--=======-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::::::::-------==-=========++++=-:::::::::::::::..............................................................:-----------------------------:.................:--------::....................               .-=+++++++++++++++==-----------------------=====--------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++************************************************************************************************+===--:::::::::::::::::::::::::::::::::::::::-----------------------------------------=======-------------------------------------------::::::::::::::::::-----------------------===++++**************++++===-------------::::::::::::::::::::::::::::::::::::::::::::::::::::--------====++++********************************+++====-----------------------::::-----==+++***+++==------------------------::::::::::-----=======--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::----==========+++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--=++**********************************************************************************************************************************************************************************************########################***********************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************************************************
##########**********++++++++++++++++++++++++++++++++++++++++++++++++++++*********##*********************++++++++++++++++++++++++++++++++++++++++++++*********#**############*******++**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++######*------========================-----------------------------------------------===+++++++++++++===--------------------------------------------------------------------------------------:::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%+=-.........::::::-----------------::::::......................................:::::::::+*+++***++*+*%@%@@@@@@@@@@@@@@@@+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***++++++++++++++++++++++++++++++++++++++++**@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%##%##########**#%%%%%%%%%%%%##########################################################################***************************************+++++================================+++##********************************************************************************+========+********+*+-----------------------==------------------------============--::---------------:----------------------------------:::::::::::::------=======-=======-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::::::::------============+++++-:::::::::::::::::.............................................................:----------------------------=:..............:---------::.......................          .-++++++++++++++++==-:::-::--------------------===---------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************+=---::::::::::::::::::::::::::::::::::::::::----------------------------------------========-------------------------------------------:::::::::::::::::-----------------------===++++**************++++===--------------:::::::::::::::::::::::::::::::::::::::::::::::::::--------===+++++*******************************+++====------------------------::::-----==+++***+++==---------------------:::::::::::::-----=======--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::---===========+++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--=++**********************************************************************************************************************************************************************************************#########################**********************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************************
##########**********+++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++***********#############**********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++#%%%##*=-----========================----------==-----------------------------------===+++++++++++++===---------------------------------------------------------------------------------------:::::::----------------------------------------:::::::::::::::::::------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@#==:.....:..::::::----------------:::::::.......................................:::::::-*+**++++++**#@%%@@@@@@%%%%@@@@@@*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+*++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%###############*##%%%%%%%%%%%%#######################################################################*##***************************************+++++=================================+++*%#*******************************************************************************=========+********+*+-----------------------==------------------------============--::----------------:---------------------------------:::::::::::::------=======--=======-::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::::::::-------============++++=-:::::::::::::::::.............................................................:--------------------------===-...........:----------:.......................         .-+++++++++++++++==--:::---------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************+---::::::::::::::::::::::::::::::::::::::::---------------------------------------=====+===-------------------------------------------:::::::::::::::::-----------------------==++++***************++++===--------------:::::::::::::::::::::::::::::::::::::::::::::::::::--------===+++++******************************+++====-------------------------:::::----==+++***+++==--------------------::::::::::::::-----=======--------------------------::::::::::::::::::::::::::::::::::::::::::::::::----==========++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--=++*****************************************************************************************************************************************************************************#####************#########################**********************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************************
##########**********++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+++++++++++++++++++++++++++++++++**++++++++***********############**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++*#%%%##*=------========================-----========---------------------------------===+++++++++++++===----------------------------------------------------------------------------------------:::::-----------------------------------:::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@*+=:.:.....:::::-----------------:::::::.......................................:::::::=*+*+*++**++#@%@@%%%%%%%%%%@@@@@@*+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*+*++++++++++++++++++++++++++++++++++++++++***@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%#####################%%%%%%%%%%%%%%########################################################################*##**************************************+++++=================================+++*##******************************************************************************+========+**********++=----------------------=-------------------------============--::----------------:-------------------------:::::::::::::::::::::------========-========-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::::::::-------=============++++=-::::::::::::::::::.......................................::...................::----------------------===+===........:----------:........................       .-+++++++++++++++=---:::---::-:::---------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++********************************************************************************************************+---:::::::::::::::::::::::::::::::::::::::---------------------------------------===+++===-------------------------------------------::::::::::::::::::---------------------===++++***************++++===--------------:::::::::::::::::::::::::::::::::::::::::::::::::::-------===+++++*****************************+++++===-------------------------::::::----==+++****++==-------------------:::::::::::::::-----=======--------------------------::::::::::::::::::::::::::::::::::::::::::::::::---===========++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--=++*****************************************************************************************************************************************************************************######**********############################*******************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************************
##########**********++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+++++++++++++++++++++++++++++++++**+++++++++***********###########***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++*#%%%###=-------=====================================--------------------------------===+++++++++++++===------------------------------------------------------------------------------------------:--------------------------------:::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%@@@@@%+=-.:....::::::-----------------::::::..........................................:::::+**+++***++*%@%%%%%%%%%%%%@@@@@@%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*+*+++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%#####################%%%%%%%%%%%%%%############################################################################**************************************+++++=================================++++##******************************************************************************+========+**********++=----------------------=-------------------------=============--:-----------------:------------------------:::::::::::::::::::::-------================--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::::::::------=============+++++-:::::::::::::::::::....................................::.......................:------------:::::::--==++=++=:....:----------::..........................   .-=+++++++++++++==--:::::------::-------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++**************************************************************************************************#**#****=-::::::::::::::::::::::::::::::::::::::::--------------------------------------===+++++==-------------------------------------------::::::::::::::::::---------------------===++++***************++++===--------------:::::::::::::::::::::::::::::::::::::::-::::::::-::-------===+++++****************************+++++====-------------------------:::::::---==+++****++==-----------------::::::::::::::::::----=======--------------------------:::::::::::::::::::::::::::::::::::::::::::::::----===========++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--==++****************************************************************************************************************************************************************************######**********############################*******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************************************************
##########**********+++++++++++++++++++++++++++++++++++++++++++++++++**************************************+++++++++++++++++++++++++++++++****++++++++++***********##########***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++*%%%%%##+--------====================================--------------------------------===+++++++++++++===----------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@#+=:.....::::::----------------:::::::...........................................:::-***+*****+*%@%%%%%%%%%%%%@@@@@@@#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##**+*++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%####%###############%%%%%%%%%%%%%%%########################################################################*###*#********+++*************************++++++=================================++++*##*****************************************************************************=========************+=------------------------------------------------=============---:---------------:-------------------------:::::::::::::::::::::-------=================--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------::::::::::::::::------=============++++=-::::::::::::::::::::........................::..................................:--------:::::::::::---=+++++=:.:----------::............................:-++++++++++++++=--:::::-::-::::-----------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++++++++++++++++++++++++++++******************************************************************************************#***+-:::::::::::::::::::::::::::::::::::::::--------------------------------------==++++++==-------------------------------------------::::::::::::::::::---------------------===++++***************++++===--------------::::::::::::::::::::::::::::::::::::::--------------------===+++++**+***********************+++++=====---------------------------::::::---==+++****++==-----:::-------::::::::::::::::::::----=======--------------------------:::::::::::::::::::::::::::::::::::::::::::::::---===========+++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--==++***************************************************************************************************************************************************************************########*********############################*******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************************************************
##########***#******++++++++++++++++++++++++++++++++++++++++++++++++**********************+++*************++++++++++++++++++++++++++++++++****+++++++++++***********##########**********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#%%%%%##+----------==================================--------------------------------===+++++++++++++===--------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@*+=:....::::::----------------::::::.............................................::=*++******##@%%%@%%%%%%%%%@@@@@@@*++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##***+*++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%#########################################################################*###*********+++*************************+++++===================================+++*##*****************************************************************************========+*************=-----------------------------------------------==============---:---------------:-------------------------::::::::::::::::::-:::------==================-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::::::::------=============+++++-:::::::::::::::::::::............................................................:--::::::::::::::::::-==++++++=---------::............................-=++++++++++++==-::::::::::::::---:::--------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++*************************************************************************########*#######**=-::::::::::::::::::::::::::::::::::::::-------------------------------------===++++++===------------------------------------------::::::::::::::::::---------------------===++++***************++++===--------------::::::::::::::::::::::::::::::::::::::--------------------==+++++**++*********************++++++=====----------------------------:::::::--==+++****++==----:::::::::::::::::::::::::::::::----=======--------------------------::::::::::::::::::::::::::::::::::::::::::::::----===========+++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--==++***************************************************************************************************************************************************************************########*********############################*******************####*###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************************************************
########*#***********+++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++********++++++++++++++++++++++++++++++++*****++++++++++++***********########***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#%%%%%##+------------================================--------------------------------===+++++++++++++====------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%++=:...::::::----------------::::::.....................................:..:....::++****####%%@%%%%%%%%%%%%%%%@@@@%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*+*+*+*++++++++++++++++++++++++++++++++*++++*%@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%##################%%%%%%%%%%%%%%%%###########################################################################*###******++++++************************+++++===================================++++###***************************************************************************+========**************+-----------------------------------------------==============--------------------:---------------------:::::::::::::::::::--::-:-------==================-:-::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::::::::-----==============+++++-::::::::::::::::::::-:........................:::................................:::::::::-:::::::::::-=+++++++=-------:...........................-=++++++++++++==-::::::::::::::::::--:----------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================+++++++++++++++++++++++++++++++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++**+++************************************************************###################**=::::::::::::::::::::::::::::::::::::::------------------------------------===+++++++===-------------------------------------------:::::::::::::::::---------------------==++++*****************+++===--------------:::::::::::::::::::::::::::::::::::-----------------------==+++++*******+**+***+*++++++++++++++=====-----------------------------:::::::---==++****++==---::::::::::::::::::::::::::::::::----=======--------------------------::::::::::::::::::::::::::::::::::::::::::::::---===========++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--::::::--=++***************************************************************************************************************************************************************************########********##############################*******************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************
########*#***********++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++*****+++++++++++++++++++++++++++++++++******++++++++++++************#*#####***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#%%%%%%#+--------------==============================--------------------------------===++++++++++++++===-----------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@#==-....:::::----------------::::::..............................................-+**#######%%@%%%%%%%%%%%%%%%@@@@#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*+*+*+*++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%@@%%###############%%%%%%%%%%%%%%%%%%#######*###################################################################**###******+++++************************+++++===================================++++###***************************************************************************+=======+**************+-----------------------------------------------==============------------------------------------------:::::::::::::::::::--::---------==================--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::::::::------=============+++++=::::::::::::::::::::::::........................::................................::::::::::::::::::::-==+++++++=----:....................... ..:=++++++++++++=--:::::::::::::::::::::--:----------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================+++++++++++++++++++++++++++++++++++++++++++++********************************++++++*++++++++++++++++++++++++++++++++++**********************************************************#############################*#*=:::::::::::::::::::::::::::::::::::::------------------------------------==+++***+++==-------------------------------------------:::::::::::::::::---------------------==++++**************+*++++===--------------:::::::::::::::::::::::::::::::::::-----------------------==+++++****+++***+**++++++++++++++++=====------------------------------:::::::---==++****++==---::::::::::::::::::::::::::::::::----=======--------------------------:::::::::::::::::::::::::::::::::::::::::::::----===========++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--::::::--=++***************************************************************************************************************************************************************************#########*******##############################******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************
########*#***********++++++++++++++++++++++++++++++++++++++++++**********************++++++++++++++**+++++++++++++++++++++++++++++++++++******+++++++++++++*************#####***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#%%%%%%#*------------------=-----===================--------------------------------====++++++++++++++====--------------------------------------------------------------------------------------------------------------::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%++=:.:.:::::---------------:::::::.....................................:.......:=*########%%%%%%%%%%%%%%%%%%%%@@@*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*+*+++*+++++++++++++++++++++++++++++++*++*#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%@@%%%%%%%%%#########%%%%%%%%%%%%%%%%%%############################################################################****##****++++++***********************+++++=====================================+++*##***************************************************************************========+#*************+=----------------------------------------------==============------------------------------------------:::::::::::::::::----::---------===================-::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=---------:::::::::::::::::------=============+++++-:::::::::::::::::::::::::.......................:::...............................::::::::::::::::::::-=++++++++=-:....................... ..-=+++++++++++=--::::::::::::::::::::::::------------------------------------------------------:-----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================+++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************###################################*#*=::::::::::::::::::::::::::::::::::::-----------------------------------===+++***+++==--------------------------------------------::::::::::::::::--------------------===++++**************++++++===--------------:::::::::::::::::::::::::::::::::::-----------------------==+++++*************++++++++++++++======-------------------------------:::::::---==++****++==---::::::::::::::::::::::::::::::::----=======--------------------------:::::::::::::::::::::::::::::::::::::::::::::----===========++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--::::::--=++***************************************************************************************************************************************************************************##########******###############################****************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************
########*************+++++++++++++++++++++++++++++++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++************#**##***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#%%%%%%#*-------------------------==================-------------------------------====++++++++++++++++===-----------------------------------------------------------------------------------------------------------------:::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@#=+=::.::::::--------------::::::.............................................:+##########%%%%%%%%%%%%%%%%%%%@@@%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*+*++**+++++++++++++++++++++++++++++++++**@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%############################################################################*****##***+++++++**********************+++++=====================================+++*##**************************************************************************+========*#**********+**+=----------------------------------------------==============------------------------------------------:::::::::::::::-------:---------====================-::-::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=---------::::::::::::::::::-----=============+++++=-:::::::::::::::::::::::::.......................::................................:::::::::::::::::::-=+++++++++=:....................  .:=+++++++++++=-::::::-:::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================================++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************########################################*=-::::::::::::::::::::::::::::::::::-----------------------------------===++****+++==--------------------------------------------::::::::::::::::--------------------===++++**************++++++===--------------:::::::::::::::::::::::::::::::::::-----------------------==+++++++**********+++++++=====++======--------------------------------:::::::---==++****++==---::::::::::::::::::::::::::::::::-----=====---------------------------::::::::::::::::::::::::::::::::::::::::::::----===========++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************++==-::::::--=++***************************************************************************************************************************************************************************###############################################****************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************************
########*************+++++++++++++++++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%%%%%%#*=------------------------=======++========-------------------------------====+++++++++++++++++===----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%+++-.:::::::-------------:::::::.....................................:.....:=##########%%%%%%%%%%%%%%%%%%%%%@@@*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##**+*+***+++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%@@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################******##*++++++++**********************+++++=====================================+++*###*************************************************************************========+##************++=----------------------------------------------==============------------------------------------------:::::::::::::::------------------===================-::-::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::==------=-:::::::::::::::::::----==============+++++=:::::::::::::::::::::::::::......................::.................................:::::::::::::::::-==+++++++++-.................. .:=+++++++++++=-::::::::::::-:::::::::::::::::----------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================+++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************##########################################*=::::::::::::::::::::::::::::::::::-----------------------------------===++****+++==--------------------------------------------::::::::::::::::--------------------==++++****************+++++==---------------:::::::::::::::::::::::::::::::::::-----------------------==+++++++++++******++++++==============--------------------------------:::::::---==++****+++=---::::::::::::::::::::::::::::::::-----====---------------------------:::::::::::::::::::::::::::::::::::::::::::::----==========+++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************++==--:::::--=++***************************************************************************************************************************************************************************###############################################****************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************************
########**************++++++++++++++++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%%%%%%#*=----::::----------------======+++=======-------------------------------====+++++++++++++++++++===---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@#=+=:..:::::------------::::::::........................................:-+############%%%%%%%%%%%%%%%%%%%%@@@%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##***++***+++++++++++++++++++++++++++++++*+#@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%@@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################********##++++++++*********************++++++=====================================++++###*********************************************************************#*#*========*#**************+=----------------------------------------------==============------------------------------------------:::::::::::::-----------:--------====================-:::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=------=--::::::::::::::::::-----=============+++++=-::::::::::::::::::::::::--:::...................::..................................::::::::::::::::-=++++++++==-:................:-=++++++++++==:::::::::::::-:::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================================+++++++++++++++++++++++++++++++**+********************************************************************************************************************************************###########################################*=:::::::::::::::::::::::::::::::::-----------------------------------===++*****++==--------------------------------------------::::::::::::::::-------------------===++++****************++++===---------------::::::::::::::::::::::::::::::::::::----------------------===+++++++++++*****+++++===============--------------------------------:::::::---==++****+++=---:::::::::::::::::::::::::::::::::-----===--------------------------:::::::::::::::::::::::::::::::::::::::::::::----===========+++++++++++++++++++++++++++++++++++++++++++++++************************************************************************++**************++==--:::::--=++***************************************************************************************************************************************************************************################################################****************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************
########**************+++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%%%%%%#*=---:::::::-------------=======++========------------------------------====++++++++++++++++++++===----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%+=+=:.:::::::----------::::::::.....................................:=*##############%%@%%%%@@%%%%%%%%%%%@@@@#++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##***+****++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%@@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################*********#*+++++++*********************++++++=====================================++++###************************************************************************+=======+****************+=---------------------------------------------===============------------------------------------------::::::::::---------:--:-:--------=====================-::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=------=--:::::::::::::::::::----==============+++++=::::::::::::::::::::::-------::::...............::..................::::::::::::::::::::::::::::::::-=+====----::-:............:-=+++++++++++=-:::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================++++++++++++++++++++++++++++++***************************************************************************************************************************************************############################################*=:::::::::::::::::::::::::::::::::----------------------------------===++*****++==--------------------------------------------::::::::::::::::-------------------===++++***************+++++===---------------::::::::::::::::::::::::::::::::::::----------------------===+++++++++++****++++++===============---------------------------------::::::---==++****+++=---::::::::::::::::::::::::::::::::::------------::----------------::::::::::::::::::::::::::::::::::::::::::::::::----===========+++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************++++*************++==--:::::--==+***************************************************************************************************************************************************************************################################################******************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************
########**************+++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%%%%%%%#*=---::::::::------------=====+++========------------------------------====+++++++++++++++++++++===----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@#==+-:.:::::::--------:::::::::::::............................::-+*################%%@@%%%%%%%%%%%%%%%%%@@@%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##***+**+*++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%@@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################**********##++++++*********************+++++======================================++++###**********************************************************************#*========+*****************=---------------------------------------------===============------:-----------------------------------:::::::::----------:--:::--------=====================-:::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=------==-:::::::::::::::::::-----=============++++++-:::::::::::::::::::-----------:::::::.........::...............:::--:::-:::::::::::::::::::::::::::-==---:::::-::-:.........-=+++++++++++=-:..:::::::-::::::::::::::::::::::::::----------------------------------::::----------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================++++++++++++++++++++++++++*********************************************##########**************************************************************************************************############################################*=::::::::::::::::::::::::::::::::-----------------------------------==++*****++==--------------------------------------------::::::::::::::::-------------------==+++++***************+++++===---------------::::::::::::::::::::::::::::::::::::----------------------====++++++++++*****++++===========+=====--------------------------------:::::----==++****+++=---::::::::::::::::::::::::::::::::::----------::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::----===========+++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************++++*************++==--:::::--==++*************************************************************************************************************************************************************************#################################################*******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************
#############***********+++++++++++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%%%%%%%#*=--:::::::::------------===============------------------------------====++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%+=+=::.::::::::--::::::::::::::-----::::::---:.............:-+**###################%@@@%%%%%%%%%%%%%%%%@@@@**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###********++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################************#*++++********************++++++=======================================+++*###*********************************************************************#*========******************=---------------------------------------------===============------:------------------------------------::::--------------:-::-:---------=====================-::::-::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==------=-::::::::::::::::::::----==============+++++=::::::::::::::::----------------:..:::::::::::................::::...::::::::::::::::::::::::::::::---::::::::::::-::....:=+++++++++++=-:..::::::::::::::::::::-::::::::::::::::-----------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================++++++++++++++++++++++++++*******************************************####################**********************************************************************************************############################################*=:::::::::::::::::::::::::::::::-----------------------------------==++*****++==--------------------------------------------::::::::::::::::------------------===+++++****************++++===---------------::::::::::::::::::::::::::::::::::::::--------------------========+++++++**++++++=====-====+++====--------------------------------::::-----==++****+++=---:::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===========++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************++++**************+==--:::::--==++****************************************************************************************************************************************************************************##############################################******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************************
#############***********+++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%%%%%%%#*=--:::::::::------------===============------------------------------====+++++++++++++++++++++++===----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=++-:::::::::::::::::::::::-=======---====-:....:......:-+**#####*###############%%@@%%%%%%%%%%%%%%%%@@@%**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**+*+***+++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################********++++**++++********************++++++=======================================+++*###*********************************************************************#+=======+******************+---------------------------------------------===============--------------------------------------------::-----------------::-:---------======================-:-:-::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-====----=-::::::::::::::::::::----===============+++++-::::::::::::--------------------:........:..............................:::::::::::::::::::::::::::::::::::::::::::::-=+++++++++++=-:...:::::--::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==---==================================++++++++++++++++++++++**********************************************##########################*********************************************************************************************###########################################*=:::::::::::::::::::::::::::::::----------------------------------==++*****++===-------------------------------------------::::::::::::::::------------------===++++*****************++++===---------------::::::::::::::::::::::::::::::::::::::--------------------=========++++++**++++++=====-===++++====---------------------------------:::----===++****+++=---::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==========+++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************+++++*************+==--:::::--==++****************************************************************************************************************************************************************************##############################################******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************************
#############**************++++++++++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++*******#**********#********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%%%%%%%#*=--::::::::-------------==============------------------------------====++++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::--------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%==++-.::::::::::::::::::-========----==-::....:..:..:-+***********#############%%@@@@%%%%%%%%%%%%%%%@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###**+*+***+++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################******++++++++++++*******************+++++++=====================================-=+++*###**********************************************************************========+******************+=--------------------------------------------===============----------------------------------------------------------------:-:---------======================-::::::-::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=====---==:::::::::::::::::::::----==============++++++-:::::::::------------------------:........................................::::::::::::::::::::::::::::::::-:::::--=+++++++++++=-:....:::-:::-:::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------===--=========-===========================+++++++++++++++*************************************************#######################################****************************************************************************************###########################################*=::::::::::::::::::::::::::::::----------------------------------==++*****++===-------------------------------------------::::::::::::::::-----------------===+++++*****************++++===---------------::::::::::::::::::::::::::::::::::::::---------------------=========+++++**++++++====--===+++++====---------------------------------------==+++****+++==---:::::::::::::::::--:::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==========+++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************++++++*************+==--:::::--==++*****************************************************************************************************************************************************************************#############################################*******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************
#############****************++++++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++*******##*#****#########***************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%%%%%%%%*---::::::::-------------==============------------------------------===+++++++++++++++++++++++++===----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::-------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*-=+=:.:.:::::::::::::-======--::::.::::...:......:=**************#######*****%%@@@@%%%%%%%%%%%%%%%%@@%#*++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###**+*+*++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################*******+++++=====++******************++++++++=====================================-=+++*###*********************************************************************+=======+*******************+=-------------------------------------------===============--------=--------------------------------------------------------:-:----------======================-::-:::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=======-==-:::::::::::::::::::::----==============+++++=::::::----------------------------:.........................................:::::::::::::::::::::::::::::::::--=++++++++++++=-....::::--::-:::::::::::::::::::::::::::::::::-------------------------:--------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------==========================---------------------------------=====--=======--=============================+++++++++++++++***********************************************####################################################*********************************************************************************###########################################*=:::::::::::::::::::::::::::::----------------------------------==++*****+++==--------------------------------------------::::::::::::::::----------------===++++******************++++===---------------::::::::::::::::::::::::::::::::::::::-----------------------=======++++++*++++++====--===+++++====---------------------------------------==+++*****++==---:::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----=========++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************++++++*************++=--::::::--=++*****************************************************************************************************************************************************************************##*###########################################******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************
#############*******************++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++******####*##################***********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************%%%%%%%%*---:::::::--------------=============-------------------------------===+++++++++++++++++++++++++===----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::----------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-=++-..:::::::::::--=+===-::..................:-+***************************%%@@@@@%%%%%%%%%%%%%%%%%%%#*+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####****+**+++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################******++++++++====++****************+++++++++=====================================-=+++*###*********************************************************************+=======+*******************+=-------------------------------------------===============---------=-------------------------------------------------------:-:----------=======================-::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=======-==-::::::::::::::::::::::---===============+++++-:::-----------------------------:--:.........................................::::::::::::::::::::::::::::--=+++++++++++==-:....:::-:-:::--::-::::::::-:::::::::::::::::::::-------------------------:--------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------==========================================----------------================-====================================++++++++++++**************************************************#########################################################################****************************************************************###########################################*=::::::::::::::::::::::::::::----------------------------------==++*****+++==--------------------------------------------::::::::::::::::----------------===++++******************++++==----------------::::::::::::::::::::::::::::::::::::::--------------------------=====+++++*++++++====--===++++++===---------------------------------------==+++*****++==-----::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----=========++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++************++=--::::::--=++******************************************************************************************************************************************************************************#**###########################################******************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************
#############************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++********#######################***********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************%%%%%%%%*=---:::-----------------=============------------------------------===++++++++++++++++++++++++++===-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::----------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@+-++=:..:.:::::::====--::.................:.:+*#***************************#@@@@@@%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###*****+*++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################*******+++++++=====+****************+++++++++=====================================-=++++###*******************************************************************#*=======+********************+==------------------------------------------==============----------=---------------------------------------------------------:----------=======================-::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-======-==--:::::::::::::::::::::---===============+++++=:::---------------------------::::::::.........................................:::::::::::::::::::::::--=++++++++++++==-....::::::::---:::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------============================================================================================================+++++++++++++++++************************************************#**#########################################################################################**************************************************###########################################*=-::::::::::::::::::::::::::----------------------------------==++*****+++==--------------------------------------------::::::::::::::::----------------==++++******************+++++==----------------:::::::::::::::::::::::::::::::::::::::--------------------------====+++++**+++++====--===++++++===--------------------------------------===+++*****++==------::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=========++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++************++=--::::::--=++*********************************************************************************************************************************************************************************###########################################*******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************
#############*******************************************##**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************########################***********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************%%%%%%%%*=-----------------------============-------------------------------===++++++++++++++++++++++++++===--------------------------------------------------------------------------------------------------------------------------------==--------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%-=++=:.....:.::-===-:.....................:*###**************************#%@@@@@@%%%%%%%%%%%%%%%%%@%%%***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**++*+*+++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%@@@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################********++++++++++=-=+***************+++++++++=======================================++++###********************************************************************+=======+********************+==------------------------------------------==============----------==--------------------------------------------------------:----------========================-::-:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==========-::::::::::::::::::::::---===============+++++-::-----------------------:::::::::---::....................................::...::::::::::::::-:::--=+++++++++++===--:::::--:::--:::::--::---::::::::::::::::::::::--:::--------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------===================================================================================================+++++++++++++++++++++++++++++++**********************************************##############################################################################################################************************************###########################################+++-::::::::::::::::::::::::----------------------------------==++*****+++==---------------------------------------------:::::::::::::::----------------==++++******************+++++==----------------::::::::::::::::::--------:::::::::::::--------------------------====+++++**+++++====--===+++++++===-----------------------------------=====++******+++==-----------::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---========+++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++==+++***********++=--::::::--=++**********************************************************************************************************************************************************************************##########################################*******************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************
##############***************************************#####*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************########################***********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************%%%%%%%%#=------------------------==========--------------------------------===++++++++++++++++++++++++++===-------------------------------------------------------------------------------------------------------------------------------===----------------------------------------------------------------------------==--------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@+:=++:..:.....:====-:....................-*#####*************************%@@@@@@%%%%%%%%%%%%%%%%@%%@%%%#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**++*+*++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%@@@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################********+++++++++++--+**************+++++++++========================================++++###********************************************************************=======+*********************+==-----------------------------------------===============---------:==--------------------------------------------------------:----------=========================-:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=========-:::::::::::::::::::::::--===============+++++=::--------------------:::::::::--------::.........................................:::::::::::::--=+++++++++++===---::-----::--::-:-:--::---:---:::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------==============================================================================================++++++++++++++++++++++++++++++++++***+++++****************************************#################################################################################################################################******************############################################==*=-::::::::::::::::::::::----------------------------------==++*****+++==---------------------------------------------:::::::::::::::----------------==++++******************++++===----------------::::::::::::::::-----------::::::::::::--------------------------====++++***+++++====--===+++++++===------------------------------=========+++*******++===--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---========+++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************++===+++***********++=--::::::--=+++*********************************************************************************************************************************************************************************##########################################*******************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************
#########************************************************#************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************#########################*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************%%%%%%%#*=------------------------=========--------------------------------===+++++++++++++++++++++++++++===------------------------------------------------------------------------------------------------------------------------------====-------------------------------------------------------------------------=======------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%-==+=.........-====:..................:=*#######***********************%@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@%#**++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###***++++++++++++++++++++++++++++++++++++++*++%@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################********+++++++++++=-=**************+++++++++========================================++++###*****************************************************************#**=======+*********************+==-----------------------------------------===============---------:-+--------------------------------------------------------:-----------========================-::-::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==========-::::::::::::::::::::::--================+++++-:::--------------:::::::::::------:-:::-::.................................:........:::::::--=+++++++++++==----:---:::::::::::::::-----------::-------::---------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------=============================================================================================++++++++++++++++++++++++++++++++++*+*+******+****++******************************##**############################################################################################################################################**********############################################=-**=:::::::::::::::::::::---------------------------------===++******++===--------------------------------------------:::::::::::::::---------------===++++******************++++===----------------:::::::::::::::----======----:::::::::---------------------------====+++++***++++===---===+++++++===---------------------------============+++*******+++===------------------===-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=======++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+++====++***********++=--::::::--=++*****************************************************************************************************************************************************************************************###################################*********************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************************************************
#########************************************************##**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************##########################*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************%%%%%%%##=-------------------------======----------------------------------===+++++++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------=====------------------------------------------------------------------------=========------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:+=+-...:....:::::..................:+##########*********************#@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@%##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####**+++++++++++++++++++++++++++++++++++++++++#%@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################********+++++++++++=-=+*************+++++++++========================================++++###*****************************************************************#*+======+**********************+==-----------------------------------------===============---------:-==-------------------------------------------------------------------=========================--:--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==========-:::::::::::::::::::::::--================++++=-:::----------::::::::::::-----:::-::::::::...........................................:::-=+++++++++++===----::--::::::::::::::::::---------::::-----::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------==========================================================================================+++++++++++++++++++++++++++++++++++++*+++++++++++*++*************+--==++********#**##***###############################################################################################################################################*******##############################################=-+#+-:::::::::::::::::::---------------------------------===++******++===--------------------------------------------::::::::::::::::--------------===++++******************++++===-----------------:::::::::::::---=========----:::::::::--------------------------====+++++**++++====---===+++*++++==-------------------------=============++++*******+++====-----------------=====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=======++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++=====+++**********++=--::::::--=++*****************************************************************************************************************************************************************************************###################################*********************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************************************************
#########************************************************##*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************#############################*****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************%%%%%%%%#=--------------------------====-----------------------------------===++++++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------======-----------------------------------------------------------------------===========-----------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%--++=:..............:............:..+###########***************#****#%@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@%###**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+++++++++++++++++++++++++++++++++++++++++#%@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################*********+++++++++++=--=************++++++++++========================================++++###****************************************************************##*=======+**********************+==-----------------------------------------===============---------:-==-------------------------------------------------------------------=========================---:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::===========-:::::::::::::::::::::::--===============+++++=::.::------::::::::::::-----:::-:::::::::::::........................................:-=++++++++++==--------------::::::--::::::::---::::::::::----:::::--::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------========================================================================================++++++++++++++++++++++++++++++++++++++++***+*+*+=:.........::=+*+-:-****=:.:.::-=+****##**##*################################################################################################################################################******##############################################*=:=#*-:::::::::::::::::::--------------------------------===++******+++==--------------------------------------------::::::::::::::::--------------===++++******************++++===-----------------::::::::::::---===++++++===---:::::::::-------------------------====++++***++++===----===+++**+++==-----------------------==============+++++********+++=====--------------======----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---======+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++======++**********++==-::::::--==++****************************************************************************************************************************************************************************************###################################********************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************************
#########**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************###################################***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************%%%%%%%%#=----------------------------------------------------------------====++++++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------======---------------------------------------------------------------------==============----------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-=++-.......:..................:..:*###########*********#########**%@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@%####**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################**********++++++++++=--=***********+++++++++++========================================++++*##******************************************************************+======+************************==----------------------------------------================-----------=====---:------------------------------------------------------------==========================--::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-===========-:::::::::::::::::::::::---===============+++++-:...:-::-:::::::::::-----:::::::-::::::::::::........................::...........:==+++++++++==-------------::--:::::------:::------::::::::----::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::----------------------------------------------------------------------------------------=====================================================================================++++++++++++++++++++++++++++++++++++++++*******++*++=-:...................:+****-..:....::-+*##*#####################################################################################################################################################***################################################*-:-*#=::::::::::::::::::--------------------------------===++*******++===-------------------------------------------::::::::::::::::--------------===++++******************++++===-----------------::::::::::::--==+++++++++==---:::::::::-------------------------====++++***++++===----===++***+++==---------------------============++++++++*********+++=======------------=======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++==--==++**********++==-::::::--==++****************************************************************************************************************************************************************************************####################################*******************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************
##########********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************#######################################**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************%%%%%%%%#+=---------------------------------------------------------------====++++++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------======---------------------------------------------------------------------===============----------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+-=+=:....:....................:.:=############*******###########*#@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################**********++++++++++==--+**********+++++++++++======================================-=++++*##****************************************************************#*+======+************************==----------------------------------------================----------:-===-----------------------------------------------------------------===========================--:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-============-:::::::::::::::::::::::--===============+++++=-:  .::::::::::::--==--::::::::::::::::::::::::...............::..:............:-=+++++++++==----::::----:----:::::::----------------::::::::----::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::--------------------------------------------------------------------------------------==============================================================================++++++++++++++******++++++++++++++++++++++++++************=.........................:+****=:.::::.:::::-=+***#####################################################################################################################################################################################################+-:-*#+:::::::::::::::::--------------------------------===++*******+++====-----------------------------------------::::::::::::::::--------------===++++******************++++===-----------------:::::::::::--==++++****+++==---::::::::-------------------------====++++***++++===----===++***+++===------------------=========++++++++++++**********++++========----------=======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++==--==++**********++==-::::::--==++****************************************************************************************************************************************************************************************####################################******************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************
##########*******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#################################################********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************#%%%%%%%%#+=-------===--=--------------------------------------------------===+++++++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------=====---------------------------------------------------------------------================----------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%====-..........................:=#############******###########*#%@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********++++++++++=====*******++++++++++++++======================================-=++++*##****************************************************************#+======+*************************+=----------------------------------------=================---------:-==------------------------------------------------------------------===========================-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-============-::::::::::::::::::::::::-================+++++-:..  .::::::::-===--::::::::::::::::::::::::::::...........................:-=++++++++==---------------:-----------------------------::::::-----:::----:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================================================++++++++++++++*****************++*+++++++++++++++++++++++***************=:=++++=-:..................=***#*-:.:::::::::::::-=+*###################################################################################################################################################################################################+-::+#*-:::::::::::::::--------------------------------===++*******++++=====---------------------------------------::::::::::::::::--------------===++++******************++++==------------------:::::::::::--==++*******+++==--::::::::-------------------------====+++++*+++++==-----===++****++===----------------=========++++++++++++++***********++++========---------========----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+==----==+***********+==--:::::--==++****************************************************************************************************************************************************************************************####################################******************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************
##########******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************####################################################*******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#%%%%%%%%#+====-=============----------------------------------------------===+++++++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------=====--------------------------------------------------------------------========+++======----------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#====:........................:=##############*****#############%@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%####*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+*++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********++++++++++=====+*****++++++++++++++=======================================-=+++++##*****************************************************************+======+*************************+=----------------------------------------=================-----------==-------------------------------------------------------------------===========================--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::==============::::::::::::::::::::::::--================++++=-     .::::--==---:::::::::::::::::::::::::::::::::.......::....:........-=++++++++==--:-------------------:::--------------:::::::::::::::----:::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================================================++++++++++++********************************+++++++++++++++++++*****************************=.................-*#***=::::::::::::::::::--=+*##############################################################################################################################################################################################*+-::=#*-::::::::::::::--------------------------------==+++********+++++=====--------------------------------------:::::::::::::::--------------===++++*****************++++===------------------::::::::::---=+++********++==---:::::::-------------------------===+++++**+++++==-----===++****+++===------------========++++++++++++++++**************++++========--------========-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++==----==++**********+==--::::::-==++****************************************************************************************************************************************************************************************####################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************************
##########******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************####################################################******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#%%%%%%%%#+====================--------------------------------------------===+++++++++++++++++++++++++++===------------------------------------------------------------------------------------------------------------------------------=====-----=====---------------------------------------------------------=======++++======-----------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*===-........................=###############****##############%@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%####*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+*+++++++++++++++++++++++++++++++++++**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********++++++++++=====+*****++++++++++++++=======================================-=+++++##***************************************************************#*======+**************************+=---------------------------------------==================-----------==-------------------------------------------------------------------===========================---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::==============:::::::::::::::::::::::::-================+++++-.      ::-==--::::::::::::::::::::::::::::::::::::::.................:=++++++++==----------------------:----------------:::::::::::::::::::--::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================================++++++++++****************************************++++++++++++++++**********************************:.................:+#**#+:.::::::::::::::::::::=+*############################################################################################################################################################################################*+*=:=##-:::::::::::::--------------------------------==+++**********+++++====-------------------------------------:::::::::::::::--------------===++++*****************++++===------------------::::::::::--==++**********++=---:::::::-------------------------===+++++**+++++==-----===++*****++====================++++++++++++++*******************++++++=======-------=========-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++==----==++**********+==--::::::-==++****************************************************************************************************************************************************************************************####################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************************
#############**********************+++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************########################################################***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#%%%%%%%%#+======================------------------------------------------===+++++++++++++++++++++++++++===-------------------------------------------------------------------------------------------------------------------------------================------------------------------------------------------=======+++========-----------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+===:......................=################****#############%@%@%@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%###**+*++++++++++++++++++++++++++++++++++++++++++++++++++++++*####**+++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********++++++++++======*****++++++++++++++=======================================-=+++++##****************************************************************+======***************************+=---------------------------------------===================----------==-------------------------------------------------------------------============================---:--::-::::::::::::::::-::::::::::::::::::::::::::::::::::::::::::-==============-:::::::::::::::::::::::::-================++++=.       :---::-::::::::::::::::::::::::::::::::::::::::::.........:-=+++++++==---------------------------------------::::::::::::::::::::::::::--------:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================================++++++++++**********************************************+++++++++++++++************************************=................:.:=#**#*-:::::::::::::::::::::-==+*##########################################################################################################################################################################################*+#*=-##-:::::::::::::-------------------------------==+++***********+++++===-------------------------------------:::::::::::::::--------------==++++******************++++==-------------------::::::::::--==++**********++==--:::::-:-------------------------===+++++**+++++==-----===++*****+++===============+++++++++++++************************+++++++=======------=========-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++==-----=++**********++=--::::::-==++*****************************************************************************************************************************#********************************************************#######################################*****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************************
#############***************++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************#########################################################**************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#%%%%%%%%#+========================----------------------------------------===++++++++++++++++++++++++++====-------------------------------------------------------------------------------------------------------------------------------=================-----------------------------------------------------======+++++=======-----------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#===-.............:..:.:.:+#%###############***##############@@@%@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%###*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################**********++++++++++======*****++++++++++++++=======================================-=+++++##**************************************************************#*======+***************************+=---------------------------------------=================-==---------==-------------------------------------------------------------------=============================-:-:---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==============-:::::::::::::::::::::::::--===============+++++-        .::::::::::::::::::::::::::::::::::::::::::::::::......-=+++++++===-----------------------------------------::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================================================++++++++******************************************************+++++++*****************************************=..............::.:.:=*#***-::::::::::::::::::::--==+++*########################################################################################################################################################################################+=##+=##=:::::::::::-:------------------------------==+++**************+++===------------------------------------:::::::::::::::-------------===++++******************++++==-------------------::::::::::--==++**********++==---::::-:-------------------------===+++++**++++===-----===++*****++++++==+++++++++++++++++*******************************+++++++=======------========------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++==-----=++**********++=--::::::--=++**********************************************************************************************************************************************************************************###########################################*****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************************
#############**************++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************############################################################*************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#%%%%%%%%#+=========================---------------------------------------===++++++++++++++++++++++++++===--------------------------------------------------------------------------------------------------------------------------------==================----------------------------------------------------======+++++======-------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*===:.............:....:+##################***#############%@%%%%@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%###*+*++*++++++++++++++++++++++++++++++++++++++++++++++++++++*####+++++++++++++++++++++++++++++++++++*++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@@%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################*********+++++++++++======+****+++++++++++++========================================-=+++++##***************************************************************+=====+****************************+==-------------------------------------==================-==---------==-------------------------------------------------------------------=============================-:-:----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::===============-::::::::::::::::::::::::::--===============++++=         .::::::::::::::::::::::::::::::::::::::::--::::::..:-+++++=====-------------------------------------------:::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================+++++++++*******************************************************++*+++++********************************************-.............:.::::.:=*###*-::::::::::::::::::---==+++==+**#####################################################################################################################################################################################=-*%*=##=::::::::::-:------------------------------===++***************+++===-----------------------------------:::::::::::::::-------------===++++******************++++==--------------------:::::::::--==++**********++==---::::-:-------------------------===+++++**++++===-----==+++*******++++++++++++++++++*************************************++++++++======-----========------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++=------==++*********++=--::::::--=++**********************************************************************************************************************************************************************************###########################################*****************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************************************
##############**********+++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************##################################################################**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#%%%%%%%%#+==========================--------------------------------------===++++++++++++++++++++++++++===--------------------------------------------------------------------------------------------------------------------------------===================--------------------------------------------------======++++++======-------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%+==-.................:+##################****############%@%%%%%%@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%##**+*++*++++++++++++++++++++++++++++++++++++++++++++++++++++*####++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%@@@@%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********+++++++++++=======***++++++++++++++========================================-=+++++##***************************************************************======*****************************+==-------------------------------------==================-===--------==-------------------------------------------------------------------============================+=----:------::::::::::::::::::::::::::::::::::::::::::::::::::::::-================::::::::::::::::::::::::::--===============+++++-.        .::::::::::::::::::::::::::::::::::::::-:::-:---==++++==-----------------------------------------------:::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================++++++**********************************************************++***************************************************-...........::::.::::::-#####=::::::::::::::::::--==++++==--=+*##################################################################################################################################################################################*=-+##+##=::::::::::-------------------------------===++****************+++===----------------------------------:::::::::::::::-------------===++++*****************++++==---------------------:::::::::--==++**********++==---::::::-------------------------===+++++**++++==-----===+++**************************************************************+++++++++=======--=========------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++=---:--==++*********++=--::::::--=++*********************************************************************************************************************************************************************************#############################################****************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************************************
##############**********++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********########################################################################*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*============================-----------------------------------====+++++++++++++++++++++++++====--------------------------------------------------------------------------------------------------------------------------------=========++=========-------------------------------------------------======++++++=====--------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%#+==:.:.............:*###################***############%@%%%%%%%@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++#####+++++++++++++++++++++++++++++++++++++*+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********+++++++++++=======***+++++++++++++=========================================-=+++++##************************************************************#*+=====+*****************************+==-------------------------------------==================--==--------==-------------------------------------------------------------------==============================-:-:-:-------::::::::::::::::::::::::::::::::::::::::::::::::::::-================-::::::::::::::::::::::::::--===============++++=-..       ..:::::::::::::::::::::::::::----::-:::-----==+++===-------------------------------------------------:::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============================================++++**********************************************************+==--====+++**********************************************+:...:.....:::.:.:::::::=####*=:::::::::::::::::--==++++==--:::-=*################################################################################################################################################################################*--=##*##=:::::::::-------------------------------===++*****************++===-----------------------------------::::::::::::::-------------===++++*****************++++==---------------------:::::::::--==++***********++=---::::::-------------------------===+++++*++++===-----===+++**************************************************************++++++++++=================------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=====+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++=--:::--=++*********++=--::::::--=++******************************************************************************************************************************########****************************************################################################****************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***************************************
##############**********+++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********##########################################################################****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*==============================---------------------------------====+++++++++++++++++++++++++===---------------------------------------------------------------------------------------------------------------------------------========++++++======------------------------------------------------=======+++++======---------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%*==-..............:*####################***###########%%%%%%%%%%@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%#*+*++*++++++++++++++++++++++++++++++++++++++++++++++++++++++#####+++++++++++++++++++++++++++++++++*++**+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################**********++++++++++++=======+**++++++++++++============================================+++++##************************************************************#*+====+******************************+==------------------------------------==================---==--------=---------------------------------------------------------------------==========================+===-::-::---------:::::::::::::::::::::::::::::::::::::::::::::::::=================-:::::::::::::::::::::::::::-================++++=:::.   .....:::::::::::::::::::::::::-------::::--==+++===-----------------------------------------------:::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================================+++++***********************************************************+=-:::::::::::::---=+****************************************#*-:......:::::::::::::::=####*-::::::::::::::::--==++++==--::::::-+*##############################################################################################################################################################################*-:=##*##=:::::::::------------------------------===++*****************+++==-----------------------------------::::::::::::::------------===++++*****************+++++==---------------------:::::::::--==++***********++=---::::::-------------------------===++++++++++===-----==+++******************************************######****************++++++++++================-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++=--:::--=++*********++==-::::::--=++******************************************************************************************************************************########******##******************************##################################################****************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***************************************
##############**********+++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********###########################################################################*#*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*=====================================--------------------------===+++++++++++++++++++++++++====--------------------------------------------------------------------------------------------------------------------------------=======++++++++=======-----------------------------------------------=======+++++=====----------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%*==:............:*###%################****##########%@%%%%%%%%%@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%#*+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++#####++++++++++++++++++++++++++++++++++++*+*+#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################**********+++++++++++=======+=+**++++++++++=============================================+++++##*************************************************************+=====+******************************====--------------=--------------------==================---===-------=---------------------------------------------------------------------==============================-::--:------------:::::::::::::::::::::::::::::::::::::::::::::-==================:::::::::::::::::::::::::::---==============++++=-::::.........::::::::::::::--------------------======-------------------------------------------------:::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================================++++************************************************************+=-::::::::::::::::::::::-+*************************************#**-:::::::::::.::::::::::=#####-:::::::::::::::--==++++==--::::::::-=*#############################################################################################################################################################################+---#####=::::::::------------------------------===++******************++===----------------------------------::::::::::::::------------===++++*****************+++++==---------------------:::::::::--==++***********++=---::::::-------------------------===++++++++++===----===+++**************************###########################***********+++++++++++===============-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---======+++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++=--:::--==++********++==--:::::--=++*****************************************************************************************************************************##############*********************************###################################################****************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
##############***********++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###############################################################################************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*===========================================--------------------===+++++++++++++++++++++++++====--------------------------------------------------------------------------------------------------------------------------------=======++++++++========----------------------------------------------=======++++======-----------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#+=-...........-*#####################****#########%@%%%%%%%%%@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#####++++++++++++++++++++++++++++++++++++++*++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################***********+++++++++++=======+=+**+++++++++=============================================++++++##*************************************************************+====+*******************************====--------------=--------------------==================---===---------:-------------------------------------------------------------------===============================-::--:-----------:::--::::::::::::::::::::::::::::::::::::::::-==================-:-:::::::::::::::::::::::::---==============++++-:::::::.......::::::::::--------------------======----------------------------------------------------:::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================+++**************************+++********************************+=-::::::::::::::::::::::::::::=+*************################*******#*=::::::::::::::::::::::=####*-::::::::::::::--==++++==--:::::::::::=*###########################################################################################################################################################################*=::=#####=:::::::------------------------------===++******************++===----------------------------------::::::::::::::------------===++++*****************++++===---------------------:::::::::--==++***********++==--::::::-------------------------====+++++++++==----===++++**************#########################################**********+++++++++++==============-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---======++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++=--::::-==++********++==--:::::--==++***************************************************************************************************************************###############*********************************##########################*########################****************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############**********+++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###############################################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*=====================================================---------====++++++++++++++++++++++++====---------------------------------------------------------------------------------------------------------------------------------=====+++++++++++++=====---------------------------------------------=======+++++======-----------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*=:....:.....*####%#################****#########@%%%%%%%%%%@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####+++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################***********++++++++++++=====+===+++++++++===============================================++++++##***********************************************************#*+====********************************=====---------------------------------===================---====----------------------------------------------------------------------------===============================-::-:-----:------::::::::::::-::::::::::::::::::::::::::::::-:===================-::::::::::::::::::::::::::::--=-============+++++-:::::::::.....::------------------------======------------------------------------------------::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================================++++*************************************************************+=-:::::::::::::::::::::::::::::::::-+***#**#**####################****###*=::::::::::::::::::::::+####*-:::::::::::::--==++++==---:::::::::::-+###########################################################################################################################################################################*-::=#####=::::::-------------------------------==++******************+++==----------------------------------:::::::::::::::-----------==++++*******************+++===---------------------:::::::::--==++***********++==--:::::--------------------------====++++++++===--=====+++*************#############################################********++++++++++++==============------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----=====++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+==--::::--=++********++==--:::::--==++****************************************************************************************************************************#################*******#***************#****######################################################****************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############**********++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###############################################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*==================================================================+++++++++++++++++++++++====---------------------------------------------------------------------------------------------------------------------------------======+++++++++++++=====---------------------------------------------=======+++++=====------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*=::.......:*#####################*****########%%%%%%%%%%%%@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################***********+++++++++++======+===+++++++++===============================================++++++##***********************************************************#*==+=+********************************=====---------------------------------===================---====----------------------------------------------------------------------------================================-:-----::::::---::::::::::::::::::::::::::::::::::::::::::::-===================-::::::::::::::::::::::::::::---=-============++++-::::::::::::...::---------------------=====--------------------------------------------------:::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================+===++++*************************************************************+=-::::::::::::::::::::::::::::::::::::::-+*#############################*#**#*+::::::::::::::::::::::*####*::::::::::::---==++++==---:::::::::::::=###########################################################################################################################################################################+-:-+#####-:-::::------------------------------==++*******************++==----------------------------------:::::::::::::::-----------==++++*******************+++===---------------------:::::::::--==++***********++==--:::::--------------------------====++++++++=========+++*************##############################################********+++++++++++++=============------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----====+++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+==--::::--=++********++==--:::::--==++******************************************************************************************************************************###############**************************########################################################*****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############**********++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#################################################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*==================================================================++++++++++++++++++++++====----------------------------------------------------------------------------------------------------------------------------------======+++++++++++++=====---------------------------------------------======+++++======-------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#+-:.:.....+######################****########%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####+++++++++++++++++++++++++++++++++++++++++*+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################***********++++++++++++=====++====+++++++===============================================++++++*##************************************************************+==+=*********************************=====---------------------------------==================----====----------------------------------------------------------------------------===============================+-::---:::::::----:::::::::::::::::::::::::::::::::::::::::-:-====================-::::::::::::::::::::::::::::--=--===========++++=-::::::---::::...:------------------===-----------------------------------------------------::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================++===+==+++*************************************************************++=--::::::::::::::::::::::::::::::::::::::::::-+###################################+:::::::::::::::::::::-*####+:::::::::::---==++++==---::::::::::::::-*##########################################################################################################################################################################=-::+#####-:::::------------------------------==++*******************++===----------------------------------::::::::::::::----------===++++*******************++++==---------------------:::::::::--==++***********++==--::::::-------------------------====++++++++=======++++*************################################################********+++++++++++++============------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=====+++++++++++++++++++++++++++++++++++++++++++++++**********++++******************************************************++==-:::::--==++*******+++=--:::::--==++********************************************************************************************************************************###############**********************##########################################################*****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############**********+++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##################################################################################*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*==================================================================+++++++++++++++++++++=====----------------------------------------------------------------------------------------------------------------------------------=====++++++++++++++=====--------------------------------------------======++++++======-------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%#+-:..:.:=######################****########%@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####+++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################***********++++++++++++===========++++++================================================++++++*##************************************************************=+==+*********************************=====-------------=------------------==================-----=====---------------------------------------------------------------------------===============================+=--:----:::::-----:::-::::::::::::::::::::::::::::::::::::::=====================-:::::::::::::::::::::::::::::----============++++-:::::::::----:::.::-------------===------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================+++************************************************************+=--::::::::::::::::::::::::::::::::::::::::::::::::-+##################################+:::::::::::::::::::::-#####+::::::::::--===+++++==--::::::::::::::::+#########################################################################################################################################################################*--:-*####*-::::------------------------------==++*******************+++==----------------------------------::::::::::::::----------===++++*******************++++==---------------------:::::::::--==++***********++==--::::::-------------------------=====+++++++======++++*************#################################################*********+++++++++++++===========------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----====++++++++++++++++++++++++++++++++++++++++++++++********++++++++****************************************************++=--::::::-==++********++=--::::::-==++*********************************************************************************************************************************###############*********************##########################################################*****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############**********+++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#####################################################################################********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*==================================================================+++++++++++++++++++======----------------------------------------------------------------------------------------------------------------------------------======++++++++++++++=====--------------------------------------------======+++++======--------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#*==++**#######################****########@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####++++++++++++++++++++++++++++++++++++++++*+*++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################***********++++++++++++============++++++================================================++++++*##*********************************************************#*+===+**********************************=====--------------------------------==================-----=====----------------------------------------------------------------------------===============================+-----------------:::-:::::::::::::::::::::::::::::::::::-:-=====================-::::::::::::::::::::::::::::::---============++++=-::::----:------:::------------==--------------------------------------------------------::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============================++====+++********************************************************++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::-+#################################+:::::::::::::::::::::=#####=:::::::::--==++++++==--:::::::::::::::::=#########################################################################################################################################################################*-::-#####*::-:------------------------------==++*******************+++==----------------------------------::::::::::::::----------===++++*******************++++==---------------------:::::::::--==++***********++==--::::::--------------------------====+++++++====+++++**************##################################################********++++++++++++++===========-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----=====++++++++++++++++++++++++++++++++++++++++++++******++++====+++***************************************************++=--::::::--=++********++=--::::::--=++**********************************************************************************************************************************##############******************##########*##################################################******************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############**********++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******########################################################################################****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*+=+===============================================================+++++++++++++++++========----------------------------------------------------------------------------------------------------------------------------------======++++++++++++++=====--------------------------------------------======+++++======---------------------==----------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%%############################****########%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++++++++++++++++++++++++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################************++++++++++++===============++================================================+++++++*##********************************************************#**====***********************************=====-------------------------------===================-----=====----------------------------------------------------------------------------=================================-----------:-----::::::::::::::::::::::::::::::::::::::-:-======================-::::::::::::::::::::::::::::::--=============++++--::---------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========================+===--==++***************************************************+++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-+################################=:::::::::::::::::::::+#####-::::::::--==++++++==--::::::::::::::::::-*########################################################################################################################################################################+:::=#####*:::------------------------------==++********************++===---------------------------------::::::::::::::----------===++++********************+++==---------------------::::::::---=+++***********++==--::::::--------------------------====++++++++++++++****************##################################################********+++++++++++++++==========-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=====++++++++++++++++++++++++++++++++++++++++++******+++======+++**************************************************++=--::::::--=++********++=--::::::--=++***********************************************************************************************************************************#############****************###############################################################******************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############**********+++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******########################################################################################****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%%%%#*++++++=============================================================++++++++++++++==========----------------------------------------------------------------------------------------------------------------------------------======++++++++++++++=====--------------------------------------------======++++======------------------==========----------------------------------------------::*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%############################***########%@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%****+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####**+++++++++++++++++++++++++++++++++++++*+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################***********++++++++++++=================================================================+++++++*##**********************************************************+=+=+***********************************=====-------------------------------===================-----======---------------------------------------------------------------------------=================================--:--------::----:::::::::::::::::::::::::::::::::::::::-=======================-::::::::::::::::::::::::::::::---=============+++=-------------------------------------------------------------------------------------------::::::::::::::::::::::::::::-::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================++=====-==++***********************************+++=============----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=*###############################=::::::::::::::::::::-*####*-:::::::--==++++++==--:::::::::::::::::::-*#######################################################################################################################################################################*-:::+#####+:::-----------------------------==++********************++===---------------------------------::::::::::::::----------===+++*********************+++==----------------------:::::::--==++************++==--::::::-------------------------=====++++++++++++******************###################################################********++++++++++++++==========-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=====++++++++++++++++++++++++++++++++++++++++*****+++==----==+++*************************************************++=--::::::--==++*******++==-::::::--=++***********************************************************************************************************************************#############*************##################################################################******************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############*******+**++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#########################################################################################***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%%%%#*++++++++++=========================================================+++++++++++++============---------------------------------------------------------------------------------------------------------------------------------======++++++++++++++=====-------------------------------------------=======++++======-----------------============---------------------------------------------::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#%##########################****########@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####**+++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%@%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################***********++++++++++++=================================================================+++++++###**********************************************************===+************************************=====-------------------------------===================-----======---------------------------------------------------------------------------=================================-:---------::----:::::::::::::::::::::::::::::::::::::-:-=======================-:::::::::::::::::::::::::::::::--=============+++=--------------------------------------------------------------------------------------------::::::::::::::::::::::::::--::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================++++++===++*****************************+++==-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=*#############################*-::::::::::::::::::::-#####+:::::::--==++++++==--::::::::::::::::::::-+#######################################################################################################################################################################*-::-*#####=::-----------------------------==++********************+++==---------------------------------::::::::::::::----------===+++*********************+++==----------------------::::::---==++************++==--::::::------------------------======++++++++++********************####################################################********++++++++++++++==========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----=======+++++++++++++++++++++++++++++++++++++****+++==------==++*************************************************++=--::::::--==++*******++==--:::::--=++***********************************************************************************************************************************############***********##########################*###*######################################******************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############********+++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##########################################################################################**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%%%%#*++++++++++++++=======================================================+++++++++================------------------------------------------------------------------------------------------------------------------------------=====++++++++++++++++=====-------------------------------------------======+++++======----------------==============--------------------------------------------::-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##########################****########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**####**+++*++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################**********++++++++++++==============================-==================================+++++++###*********************************************************+==++************************************======------------=-----=----------====================----=======----------------------------:----------------------------------------------==================================-:-:--::-::::::-:::::::::::::::::::::::::::::::::::::::=========================::::::::::::::::::::::::::::::::-==============+++=------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================++=++=---==***************************+=---------------===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-+#############################*-::::::::::::::::::::+#####=:::::---==++++++==---:::::::::::::::::::::+#######################################################################################################################################################################+:::-######=::-----------------------:----==+++********************++==----------------------------------:::::::::::::----------===+++*********************+++==---------------------:::::::--==+++************++==--:::::::---------------------=======++++++++**********************#####################################################**********++++++++++++==========----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=======++=++++++++++++++++++++++++++++++++****+++==--:::--=++*************************************************+==--:::::::-==++*******++==--:::::--=+++************************************************************************************************************************************########*************######################################################################******************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############********+++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##########################################################################################**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%%%%#*+++++++++++++++++=====================================================++++++====================----------------------------------------------------------------------------------------------------------------------------=====++++++++++++++++=====-------------------------------------------======+++++======---------------================-------------------------------------------:::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##########################***########%@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**+*++*++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++**####***++*++++++++++++++++++++++++++++*+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################**********++++++++++++==============================-==================================+++++++##********************************************************#*===+*************************************======-----------------------------====================----======----------------------------------------------------------------------------================================+==:----::-::::::-::::::::::::::::::::::::::::::::::::-:-=========================-::::::::::::::::::::::::::::::::-=============+++=------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================+++++====++******************************###################*********+=-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=*############################*-:::::::::::::::::::-*#####-::::---==++++++==---::::::::::::::::::::::=######################################################################################################################################################################*=:::+######-------------------------:----==+++********************++===---------------------------------:::::::::::::----------===+++*********************+++==----------------------:::::---==++*************++==--:::::::--------------------======+++++++*************************#####################################################**********+++++++++++++=========-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----=========++++++++++++++++++++++++++++++++****+++=--::::--==+*************************************************+==--:::::::--=++*******++==--:::::--==++************************************************************************************************************************************########*************######################################################################******************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############*********+++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##########################################################################################**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%%%%#*+++++++++++++++++++++++++++======================================================================---------------------------------------------------------------------------------------------------------------------------=====+++++++++++++++======------------------------------------------=======++++======---------------=================-------------------------------------------:::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#########################***#########@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***+**++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++**####****+*+++++++++++++++++++++++++++*+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################**********+++++++++++==============================--==================================++++++*##****************************************************#****+==+**************************************======-----------------------------===================----=======----------------------------------------------------------------------------================================++=----::---::::::::::::::::::::::::::::::::::::::::::-:-=========================-::::::::::::::::::::::::::::::::--============+++=------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================+++++++=+++*************************##########################################**++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-+############################*::::::::::::::::::::-#####*-:::---==++++++==---:::::::::::::::::::::::=*#####################################################################################################################################################################*-:::*#####*------------------------:-----=+++********************++===---------------------------------:::::::::::::----------===++++*********************+++==---------------------:::----==+++*************++==--::::::::-----------------======+++++++***************************######################################################*********+++++++++++++=========-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=======+++++++++++++==+++++++++++++++++****++==--::::--==++***********************************************++==--:::::::--=++********++=--:::::--==++***************************************************************************************************************************************##****************######################################################################******************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############*********+++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###########################################################################################**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%@@%#*++++++++++++++++++++++++++++++====================================================================--------------------------------------------------------------------------------------------------------------------------=====+++++++++++++++======------------------------------------------=====++++++======---------------==================-----------------------------------------::::-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##########################**#########%@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+***++*+++*++*++++++++++++++++++++++++++++++++++++++++++++++++++**####****+*+++++++++++++++++++++++++++**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%@@@@%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################**********+++++++++++=============================--==================================+++++++*##*********************************************************==+***************************************=======----------=----------------====================----======-----------------------------------------------------------------------------=================================++-::----:-:::::::::::::::::::::::::::::::::::::::::::-==========================-:::::::::::::::::::::::::::::::::-============+++=------------------------------------------------------------------------------------------:::::::::::::::---::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================++++++++++**************************###############*####################################**+=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=*###########################+::::::::::::::::::::=#####+:::---==++++++==---::::::::::::::::::::::::-*#####################################################################################################################################################################+-::=######*---:-------------------::----=+++********************+++==---------------------------------:::::::::::::----------===++++*********************+++==---------------------::----==+++**************++==--::::::::--------------======+++++++******************************######################################################*********+++++++++++++=========-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----======++++++++++=======+++++++++++++*****++==--:::::-==++***********************************************++==--:::::::--==++*******++=--:::::--==++*********************************************************************************************************************************************************#######################################################################*****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############*********++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###########################################################################################**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%@@%#*++++++++++++++++++++++++++++++====================================================================-------------------------------------------------------------------------------------------------------------------------=====++++++++++++++++======------------------------------------------=====++++++=====----------------======+++==========----------------------------------------:::::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%######################***#########@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**++*+***+++++++++++++++++++++++++++++++++++++++++++++++++++++***####****++++++++++++++++++++++++++++**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%@@@@%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################*********+++++++++++=============================---==================================+++++++*##******************************************************#*+=+***************************************+=======----------=--:--=----------===================-----======-----------------------------------------------------------------------------==================================+=-:----:-:::::::::::::::::::::::::::::::::::::::::::-===========================:::::::::::::::::::::::::::::::::--===========++++------------------------------------------------------------------------------------------:::::::::::::------:::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================+++++++++++****************************#################**+=----====++*##########################**+--:::::::::::::::::::::::::::::::::::::::::::::::::::::::----=*###########################=::::::::::::::::::::*#####=::---==++++++==---:::::::::::::::::::::::::-*#####################################################################################################################################################################=:::+######+----------------------:::---=+++*********************++==----------------------------------::::::::::::-----------===+++++********************++==--------------------------===+++**************++==--::::::::-----------=======+++++++********************************######################################################***********++++++++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----======+++++++==========++++++++++++*****++==--:::::--=++***********************************************++==--:::::::--==++*******++=--:::::--==++**********************************************************************************************************************************************************######################################################################*****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############*********+++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****############################################################################################*************************+++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%@@@%%*++++++++++++++++++++++++++++++++==================================================================-------------------------------------------------------------------------------------------------------------------------=====++++++++++++++++======-----------------------------------------======++++++=====---------------========++==+========---------------------------------------:::::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#####################**#########%@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####****++*++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################*********+++++++++++============================----==================================+++++++*##****************************************************##*+=+****************************************+===========------=--:------------====================-----===+=------------------------------------------------------------------------------===================================+-::---:-:---:::::::::::::::::::::::::::::::::::::::============================-:::::::::::::::::::::::::::::::::-===========++++------------------------------------------------------------------------------------------:::::::::::::------:::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================+++++++++****************************#############################*+=--::-----==+*######################*+=--::::::::::::::::::::::::::::::::::::::::::::::::----===+*##########################=:::::::::::::::::::-#####*-:--==+++++++==---::::::::::::::::::::::::::-*#####################################################################################################################################################################=::-#######=--------------------::::---==++*********************++===---------------------------------::::::::::::-----------===++++++*******************++==--------------------------==++++**************++==--::::::::----------======++++++++*********************************######################################################*************++++++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=====+++++======---===++++++++++******++==--:::::--=++***********************************************++==-:::::::::--=++*******++==--::::--==++**********************************************************************************************************************************************************######################################################################*****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############*********++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******############################################################################################*************************+++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%@@@%%*+++++++++++++++++++++++++++++++++=================================================================------------========-----------------------------------------------------------------------------------------------------=====++++++++++++++++=====------------------------------------------=====++++++======---------------========++=+++=======---------------------------------------:::::-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*++*++*+++++++++++++++++++++++++++++++++++++++++++++++++***####****+**+++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################*********++++++++++============================----===================================+++++++*##******************************************************+=+*****************************************+============----------=----------====================----=====-------------------------------------------------------------------------------===================================+=-:-:-:::---::::::::::::::::::::::::::::::::::::::-============================-:::::::::::::::::::::::::---::::.:-==========+++=------------------------------------------------------------------------------------------:::::::::::--------:::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================++++++++++********************************################################*+=--::::::---=+*#####################*+=--:::::::::::::::::::::::::::::::::::::::::::---===+++*##########################-:::::::::::::::::::+#####*---==++++++++==--::::::::::::::::::::::::::::+####################################################################################################################################################################*-::=#######--------------------::::---==++*********************++===---------------------------------::::::::::::------------===++++++++****************++==--------------------------==+++++*************++=---::::::::--------========++++++++**********************************#####################################################*************++++++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----======++=====-------==+++++++++******++==--:::::--=++***********************************************++==-:::::::::--=++*******++==--:::::--=++******************************************************++++*************************************************************************************************#####################################################################*****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############*********+++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******############################################################################################*************************++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%@@@%%*+++++++++++++++++++++++++++++++++++===============================================================------------============-------------------------------------------------------------------------------------------------=====++++++++++++++++=====------------------------------------------=====+++++=======--------------======++++++++++=======--------------------------------------::::::%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++*++++++++++++++++++++++++++++++++++++++++++++++++++***####****+**+++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################*********++++++++++===========================----====================================+++++++###*****************************************************+=+******************************************+============----------=---------====================-----=====-------------------------------------------------------------------------------=====================================-:-:--::---::::::::::::::::::::::::::::::::::::::-============================-:::::::::::::::::::::::::------::-===============------------------------------------------------------------------------------------------::::::::::---------:::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================+++++++++*****************************#########################################*+=--:::::::---=+*#####################*+=--:::::::::::::::::::::::::::::::::::::----==+++++*#########################*-:::::::::::::::::::*#####=--==++++++++==--:::::::::::::::::::::::::::::+####################################################################################################################################################################*-::*######*-------------------::::---==++*********************+++==----------------------------------:::::::::::------------====++++++++***************++==-------------------------====++++*************++=---::::::::--------========+++++++++*********************************#####################################################*************++++++++++=========----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----==========---------==+++++++*******++==--:::::--==++**********************************************++=--:::::::::--=++*******++==--:::::--=++***************************************************+++++++++++**********************************************************************************************####################################################################*****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
##############**********+++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##########################################################################################***************************+++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#%%%@@@@@%*++++++++++++++++++++++++++++++++++++==============================================================----------==================--------------------------------------------------------------------------------------------======++++++++++++++++=====-----------------------------------------=======++++======---------------======++++++++++========------------------------------------:::::::+@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%####################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*+++*++++++++++++++++++++++++++++++++++++++++++++++****#####***+*****++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################**********+++++++++===========================----=====================================++++++*##*****************************************************++********************************************+==========-==--=----------------=======+============-----====-:-----------------------------------------------------------------------------=======================================:--:-:----::::-::::::-:::::::::::::::::::::::::-==============================-:-::::::::::::::::::---------------===========--------------------------------------------------------------------------------------------:::::::::::::--:::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================++++++++++*******************************############################################*+=-:::::::::--=+*######################*+=-:::::::::::::::::::::::::::::::::---===++++++*#########################+:::::::::::::::::::=######--=+++++++++==--::::::::::::::::::::::::::::::+####################################################################################################################################################################+-:-#######+------------------::::---==++*********************+++==----------------------------------:::::::::::-------------=====+++++++**************++==-------------------------=====++++************++=--:::::::::--------============+++++********************************#######################################################****************++++++=========----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----========----::::--==++++++********++==--:::::--==++**********************************************++=--:::::::::--==++******++==--:::::--=++************************************************++++++===+++++++********************************************************************************************#####################################################################****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
##############**********++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########################################################################################***************************+++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#%%%@@@@@%#+++++++++++++++++++++++++++++++++++++=============================================================----------=====================-----------------------------------------------------------------------------------------======++++++++++++++++=====-----------------------------------------======+++++======---------------=====+++++++++++++=======-----------------------------------::::::.-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%##################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++++++++++++++++++++++++++++++++++++++++++++++++++**#####***+*****++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################**********+++++++++===========================---======================================++++++*##***************************************************************************************************+=============-==-----=----------=======+============----====--------------------------------------------------------------=-----------------=======================================-:--:-----:::::::::::::::::::::::::::::::::::::-==============================-:-:::::::::::::::::-----------------===---------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================++++++++++++*******************************#################################################**=-:::::::::--=*#######################*+=-:::::::::::::::::::::::::::::---===+++++++*#########################+:::::::::::::::::::+#####*-==+++*++++==--:::::::::::::::::::::::::::::::+####################################################################################################################################################################+::+#######=:----------------:::::--==++**********************++==----------------------------------:::::::::::--------------======+++++**************+++=--------------------------======+++**********++==--:::::::::---------=============++++*******************************#######################################################****************++++++==========---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----======----:::::---==++++*********++==--:::::--==++*********************************************+++=--:::::::::--==++******++==--:::::--=++***********************************************++++==========++++******************************************************************************************######################################################################****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************##*
##############************++++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########################################################################################***************************++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#%%%@@@@@%#+++++++++++++++++++++++++++++++++++++++++=========================================================----------========================--------------------------------------------------------------------------------------=====+++++++++++++++++=====-----------------------------------------=====++++++======---------------=====++++++++++++++======-----------------------------------::::::.:%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*++*+++++++++++++++++++++++++++++++++++++++++++++++**#####**********+++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********+++++++++==========================---======================================+++++++*##***************************************************************************************************+=============-==---------------========+============----====-:------------------------------------------------------------=-----------------========================================---:-----::::::::::::::::::::::::::::::::::::-===============================-::::::::::::::::--------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================+++++++++++++********************************######################################################*+=--::::::::-=+*#######################*+=-::::::::::::::::::::::::----==++++++++++*########################=::::::::::::::::::-######+-=++++++++==--:::::::::::::::::::::::::::::::-*####################################################################################################################################################################=:-########=----------------:::::--==++**********************++==----------------------------------::::::::::-----------------=====+++++*************+++=-----------------------------====++**********++==--:::::::::---------------========+++*******************************#######################################################****************+++++++=========----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===----:::::::--==++++********+++==-::::::--==++*********************************************++==--::::::::::-==++******+++=--:::::--=+++********************************************++++=====----=====++++***************************************************************************************#######################################################################*****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************###*
##############************+++******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########################################################################################***************************+++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#%%@@@@@@%#++++++++++++++++++++++++++++++++++++++++++++++====================================================----------==========================-----------------------------------------------------------------------------------======+++++++++++++++++=====-----------------------------------------====++++++======----------------=====+++++++++++++++======----------------------------------:::::::.+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+*+++++++++++++++++++++++++++++++++++++++++++++++**#####**********+++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%##################################################***********++++++++==========================----======================================+++++++###***************************************************************************************************+=============-==----=---------========+++==========----====---------------------------------------------------------------==-------------=-=========================================--:------::::::::::::::::::::::::::::::::::::-===============================-::::::::::--------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================+++++++++++++*********************************###########################################################**==-::::::::-=+*#######################*+--::::::::::::::::::::----==+++++++++++*#######################*-::::::::::::::::::=######==++++++++==--::::::::::::::::::::::::::::::::-*###################################################################################################################################################################*=:+#######*---------------::::::--==++**********************++==-----------------------------------:::::::::-------------------=====+++*************+++==------------------------------==+++*********++==--:::::::::-------------------====+++******************************########################################################****************+++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::---==++++*******+++==-::::::--==++*********************************************++==--::::::::::--=++*******++=--:::::--==++*******************************************+++====----------===++++**************************************************************************************#######################################################################*****************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************###*
##############*************++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########################################################################################****************************+++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#%%@@@@@@%#++++++++++++++++++++++++++++++++++++++++++++++++==================================================---------==============================--------------------------------------------------------------------------------=====++++++++++++++++++=====-----------------------------------------====++++++======----------------=====+++++++++++++++======----------------------------------:::::.:.-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++++++++++++++++++++++++++++++++++++++++++++++++**#####***********++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%##%%%%%###############################################***********++++++++=========================---===--===================================+++++++###***************************************************************************************************==============-==----=---------========+++==========----===----------------------------------------------------------------==------------==-==========================================--::----::::::::::::::::::::::::::::::::::::================================-:-:::::-----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================++++++++++++++**********************************#################################################################*+=-:::::::--+*#######################*+=-:::::::::::::::::----==++++++++++++*#######################*-::::::::::::::::::*#####*++++*++++==--:::::::::::::::::::::::::::::::::-*###################################################################################################################################################################*-:*#######+---------------:::::--==++**********************++===------------------------------------:::------------------------====+++**************++==-------------------------------==++*********++=---::::::::::------------------====++++*****************************########################################################*****************++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::--==++++*******+++=--::::::--==+++********************************************++==--::::::::::--==++******++==-:::::--==++******************************************+++===--------------===++*************************************************************************************########################################################################*****************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************##*
##############*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########################################################################################*****************************+++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#%%@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================---------=================================-----------------------------------------------------------------------------=====++++++++++++++++++=====----------------------------------------=====++++++======----------------=====++++++++++++++++=====---------------------------------:::::::..:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++*++*++++++++++++++++++++++++++++++++++++++++*+***####***********++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%##############################################***********++++++++========================---===---===================================++++++*###***************************************************************************************************==============-=----=---------=========+++=========----===--:--------------------------------------------------------------==-----------===============================================-:-----:::::::--::::::::::::::::::::::::::-=================================:-::-:-------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================++++++++++++************************************######################################################################*==-::::::-=+*########################*=-::::::::::::::----==++++++++++++=+#######################+::::::::::::::::::-######*++*+++++==--::::::::::::::::::::::::::::::::::-*###################################################################################################################################################################+:=########=--------------:::::--==+++*********************+++==-----------------------------------------------------------------==+++**************++==-------------------------:-----==++*********++=---::::::::::------------------===+++++****************************#########################################################*****************++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::::--==+++++******+++=--:::::::-==+++********************************************++==-:::::::::::--==++******++==--::::--==++******************************************++===-----:::::::----===++************************************************************************************#########################################################################****************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************##*
##############*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########################################################################################*****************************+++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************#%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================---------=======================================----------------------------------------------------------------------=====+++++++++++++++++++=====---------------------------------------======++++++=====----------------======++++++++++++++++=====---------------------------------::::::::..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##################%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++**+*++++++++++++++++++++++++++++++++++++++++*++**####************+++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%############################################**********+++++++++=======================---====--==-=================================++++++*##****************************************************************************************************==============-=----=---------========+++++========----===------------------------------------------------------------------==----------================================================------::::::----::::::::::::::::::::::::--=================================:--:-:-------------------------------------------------------------------------------------------------------------------------------------::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================+++++++++++++**************************************#########################################################################**=--::-=---=*########################*+=-::::::::::----==+++++++++++++=+#######################=::::::::::::::::::+######*+*+*+++==--:::::::::::::::::::::::::::::::::::-*###################################################################################################################################################################=:*%######*-------------::::::---=+++*********************+++==-------------------------------------------==========------------==+++**************++==--------------------:::::::::--==++*********++=--:::::::::::-----------------====++++*****************************#########################################################*****************+++++++========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===++++++****+++=--:::::::--=+++*******************************************+++==-::::::::::::-==++******++==--::::--==++*****************************************++===----:::::::::::---==+++***********************************************************************************#########################################################################****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************###
##############******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########################################################################################*****************************++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************#%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================---------==============================================---------------------------------------------------------------=====+++++++++++++++++++=====---------------------------------------=====+++++=+=====----------------======+++++++++++++++++====---------------------------------:::::::.:.:%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%################%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++*++++++++++++++++++++++++++++++++++++++++++*++**####************+++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%##########################################**********+++++++++=======================--=====-===-=================================++++++*##****************************************************************************************************==============-----=----------========+++++========---===-------------------------------------------------------------------==---------==================================================-----:::::------:::::::::::::::::::::::-==================================::---:----------------------------------------:::------------------------------------------------------------------------------------------::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================+++++++++++*****************************************#############################################################################**+++-::::-=**########################+=-:::::::----==+++++++++++++===*######################-:::::::::::::::::-*######++**+++==--::::::::::::::::::::::::::::::::::::-*###################################################################################################################################################################-=########+------------::::::---==++*********************+++==--------------------------------------================-----------==+++**************++==-------------------::::::::::--==++********+++=--:::::::::::----------------====+++++****************************##########################################################*****************+++++++========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++***++==--:::::::--=+++*******************************************+++==-::::::::::::-==++******++==--::::--==++*****************************************++==---::::::::::::::---==++***********************************************************************************#########################################################################*****************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************###
##############*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################################*****************************+++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**************************#%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================---------=====================================================--------------------------------------------------------====++++++++++++++++++++=====---------------------------------------=====++++++======----------------=====++++++++++++++++++====--------------------------------::::::::::..#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%##############%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***++++++++++++++++++++++++++++++++++++++++++++*+*+*#####*************+++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%##%%%%%%%%%%%%%%%%%%#########################################************+++++++=======================--===========================================+++++++###****************************************************************************************************============-==----=---------========++++++=======----==---------------------------------------------------------------------=--------===================================================-:--:-::::----:::::::::::::::::::::::-:============================-======---:--------------------------------------:::::::-----------------------------------------------------------------------------------------:::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================+++++++++++***************************************######################################################################################*+=-::::-=*#########################+=-::::---===++++++++++++===-=*#####################*::::::::::::::::::+######*++++++==---::::::::::::::::::::::::::::::::::::-*##################################################################################################################################################################*-*########=-----------::::::---==++*********************+++==--------------------------==================++++++=====----------==+++**************++==-------------------::::::::::--==++********++==--:::::::::::---------------====+++++****************************###########################################################*****************+++++++=========---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====+++++++++++=--:::::::--=+++*******************************************+++=--::::::::::::--=++******+++=--:::::--=++****************************************++==---::::::::::::::::---==++********************************************************************************###########################################################################******************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************##
##############*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################################******************************+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************##%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================---------=========================================================---------------------------------------------------=====++++++++++++++++++++=====---------------------------------------=====++++++=====-----------------=====++++++++++++++++++====--------------------------------:::::::::.:.=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%#############%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++*++++++++++++++++++++++++++++++++++++++++++*+*+*#####*************++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%#%%%%%%%%%%%%%%%%%%%#########################################************+++++++=======================-============================================+++++++###****************************************************************************************************==============-----=---------========++++++=======---=+----------------------------------------------------------------------==-------===================================================---:::::-:----::::::::::::::::::::-:-:-===========================--======-:--------------------------------------::::::-------------------------------------------------------------------------------------------------::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================+++++++++++*************************************#*******######################################################################################**==-:::-=*########################*+=-::---==++++++++++++===---*#####################+:::::::::::::::::-*######**++++==---:::::::::::::::::::::::::::::::::::::=*##################################################################################################################################################################+=########*-----------::::::---==++**********************++==------------------====================++++++++++++++===-----------==++**************++==-------------------::::::::::--==++********++==--:::::::::::---------------===+++++****************************#############################################################****************+++++++=========---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=====++++++++++=--:::::::--=+++*******************************************+++=--::::::::::::--=+++******++=--:::::--=++****************************************++==---::::::::::::::::---==++********************************************************************************###########################################################################******************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******************************##
##############****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########################################################################################*******************************+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================---------===============================================================---------------------------------------------=====++++++++++++++++++++=====---------------------------------------=====++++++=====-----------------=====+++++++++++++++++=====-------------------------------::::::::::::::%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##########%%%%%%%%%%##%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++**++++++++++++++++++++++++++++++++++++++++++++*+*####*************+++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%#########################################************++++++=====================================================================++++++*###****************************************************************************************************==============----=---------========++++++++=======--==----------------------------------------------------------------------==-------====================================================-:--:-:-:----:::::::::::::::::::::-::============================--======---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================++++++++++++*******************************************##############################################################################################*+=-:::-=*########################*+=---==++++++++++++===----*#####################=:::::::::::::::-:=######*+++++==---::::::::::::::::::::::::::::::::::::::=###################################################################################################################################################################=*########+---------:::::::---==++**********************++==------------==================++++++++++++++++++++++===-----------==++**************++==-------------------::::::::::--==++********++==--::::::::::::-------------===+++++*****************************#############################################################****************+++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::---=====+++++++++=--:::::::--=+++*******************************************++==--::::::::::::--==++******++=--:::::--=++***************************************++==---::::::::::::::::::---==++******************************************************************************############################################################################******************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******************************##
##############***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########################################################################################*******************************+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************######**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================--------=========================================================================-----------------------------------=====+++++++++++++++++++++=====--------------------------------------======++++++=====-----------------=====+++++++++++++++++=====------------------------------:::::::::::::::*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%########%%%%%%%%%%%%#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+*++**++++++++++++++++++++++++++++++++++++++++++*+++*####**************++++++++++++++++*+**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%#########################################************++++++=====================-===============================================++++++*##*****************************************************************************************************=============---------------========++++++++======--==-----------------------------------------------------------------------==------=====================================================-:--:-:::----::-::::::::::::::::::-:-===========================---========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================--------------------------------------------------------------------------------------====================++++++++++******************************************######################################################################################################*+=-::-+*########################*++==+++++++++++++==---:-*####################*-:::::::::::::::--*######*++++==---:::::::::::::::::::::::::::::::::::::::=##################################################################################################################################################################*=#########----------::::::---==++**********************++===--------==========+++++++++++++++++++++++++++++++++===-------:---=+++**************++==-------------------::::::::::--==++********++==--::::::::::::------------====++++******************************#############################################################*****************++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::-----=====+++++++=--:::::::--=+++*******************************************++==--::::::::::::--==++******++=--:::::--=+++**************************************++==---:::::::::::::::::::--==++***************************************************************#####**********############################################################################******************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************##
###############**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########################################################################################******************************+++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************##***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============--------==============================================================================------------------------------=====+++++++++++++++++++++=====--------------------------------------=====++++++======-----------------=====+++++++++++++++++=====------------------------------::::::::::::.::-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%####%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+**+*+++++++++++++++++++++++++++++++++++++++++++++++*#####******************+++*********+***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%#%%%%%%%%%%%%%%%%%%%%%%%#########################################************++++++=====================-===============================================++++++###*****************************************************************************************************=============--------------=========++++++++======-==------------------------------------------------------------------------==------======================================================-:-:-::-----:--::::::::::::::::-::-============================---====++++=-------------------------------==------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================----------------------------------------------------------------------------------==================++++++++++++************************************************######################################################################################################*+-:--+*########################**++++++++++++===--:-:-*####################+:::::::::::::::--=#######*+++==---::::::::::::::::::::::::::::::::::::::::+##################################################################################################################################################################+*########*---------::::::---==++**********************+++==------=======++++++++++++++++++++++++++++++++++++====------:::---==++**************++==--------------------:::::::::--==++********++==--::::::::::::------------===++++******************************##############################################################*****************+++++++========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::-------===+++++++=--:::::::--=+++*******************************************++==--::::::::::::--==++******++==-:::::--==++**************************************++=---::::::::::::::::::::---=++***************************************************************#####*********#############################################################################******************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************##
###############*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########################################################################################******************************+++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++=======-------================================================================================-----------------------------======++++++++++++++++++++=====--------------------------------------=====++++++=====------------------=====++++++++++++++++======-----------------------------::::::::::.::::::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%####%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+**+*++++++++++++++++++++++++++++++++++++++++++++*+**#####*****************************+*++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#########################################************+++++======================================================================+++++*###*****************************************************************************************************=============--------------========+++++++++=====-===------------------------------------------------------------------------==-----=======================================================-:----:-----:---::::::::::::::::::-===========================---==+++++++=----------------------------==-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================-------------------------------------------------------------------------------===================+++++++++++************************************##########***###########################################################################################################+=--=+*#########################*+++++++++===---:::-*####################=:::::::::::::::--*######**++==---:::::::::::::::::::::::::::::::::::::::::+##################################################################################################################################################################+#########=--------::::::---==++**********************+++============++++++++++***+++++++++++++++++++++========------::::---==++**************++==----------------------::::::---==++********++==--::::::::::::-----------===++++*******************************##############################################################*****************+++++++========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===-----:::::::::::::::::::::::::::::::::::::::::---------==++++++=--:::::::--=+++*******************************************++==--::::::::::::--==++******++==--::::--==++*************************************+++=---::::::::::::::::::::---==+**************************************************************#########*****###############################################################################*****************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************##
###############************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########################################################################################*****************************+++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======------==================================================================================----------------------------======++++++++++++++++++++=====--------------------------------------=====++++++=====------------------=====++++++++++++++++=====-----------------------------::::::::::::::::::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%###%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*+****++++++++++++++++++++++++++++++++++++++++++++*+*+*####******************************+****+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%#########################################************+++++=====================-================================================+++++*###*****************************************************************************************************=============-------------=========+++++++++========-------------------------------------------------------------------------==-----=======================================================-::--------::---:::::::::::::::::-===========================--==+++++++===------------------------====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================----------------------------------------------------------------------------===================+++++++++++************************************************#################################################################################################################*+=-=+#########################**++++++===---::::-*###################*-::::::::::::::--=#######*++==---::::::::::::::::::::::::::::::::::::::::::*#################################################################################################################################################################**########*--------::::::---==++***********************+++======+++++++++**********++++++++++++++++==========------::::::---==++**************++==-------------------------------==++********++==--::::::::::::----------===++++*******************************###############################################################*****************++++++++=======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=======----:::::::::::::::::::::::::::::::::::::::----------==++++==--:::::::--=+++*******************************************++==--:::::::::::::-==++******++==--::::--==++*************************************++==--::::::::::::::::::::::--==++*************************************************************############**###############################################################################******************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************##
###############***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########################################################################################****************************+++**********++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======------===================================================================================---------------------------======++++++++++++++++++++=====--------------------------------------=====++++++=====------------------=====++++++++++++++++=====-----------------------------:::::::::::::::.::-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%#%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+*++**+++++++++++++++++++++++++++++++++++++++++++***++*####********************************+***+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%#########################################************+++++====================--===============================================++++++*##******************************************************************************************************==============------=-----========+++++++++*+======--------------------------------------------------------------------------==-----=======================================================-:--:------::---:::::::::::::::-:-=============================++++++++==-----------------------====-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================------------------------------------------------------------------------===================+++++++++++**+++=================++++++++++=-----------------======+++++*****#####################################################################################################*+=+*#########################*++++===---:::::=*###################*-:::::::::::::---*######*++==---::::::::::::::::::::::::::::::::::::::::::-*#################################################################################################################################################################*#########+--------:::::---==++************************+++++++++++++**************++++++==============-----------::::::::--==+++*************++==-------------------------------==++********++==--::::::::::::----------===+++********************************###############################################################*****************++++++++========---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===+=====----:::::::::::::::::::::::::::::::::::::----------==++++==--:::::::--=+++*******************************************++==--:::::::::::::--=++******++==--::::--==++*************************************++==--::::::::::::::::::::::--==++*************************************************************#############################################################################################******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************************##
##############************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########################################################################################*****************************+++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-----==========+++++++====================================================================---------------------------=====+++++++++++++++++++=====--------------------------------------=====++++++======------------------=====+++++++++++++++======-----------------------------:::::::::::::::::::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**+*+**++++++++++++++++++++++++++++++++++++++++++++*+*+*#####*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%%%%%%@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%%#########################################************+++++===================-=================================================++++++###******************************************************************************************************==============------=-----========+++++++++++=====---------------------------------------------------------------------------==----=========================================================:-:--------:::-----:::-:-::-:-:-============================+++++++====---------------------====------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================----------------------------------------------------------------------===================++++++++++++**=::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::---===+++*******########################################################################################**++*########################*++===----:::::=####################=:::::::::::::---+#######++==---:::::::::::::::::::::::::::::::::::::::::::-############################################################################################################################################################################-------::::::---==++************************+++++++++*****************+++++==============-----------:::::::::----==++++***********++==-----------------=====--------===++********++==--:::::::::::::---------==++++********************************################################################################****************++++++++========---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++===---:::::::::::::::::::::::::::::::::::::-----------==+++==--:::::::--==+++******************************************++==--:::::::::::::--=++******+++=--::::--==++*************************************++==--::::::::::::::::::::::--==++*************************************************************##############################*###############################################################*****************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************##
##############***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################################*****************************+++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-----========++++++++++++=================================================================---------------------------=====+++++++++++++++++++=====--------------------------------------=====++++++======------------------=====+++++++++++++++======-----------------------------:::::::::::::::::::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++**+++*+++++++++++++++++++++++++++++++++++++****+*+*+**####****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%#########################################***********++++++==================-==================================================++++++###******************************************************************************************************==============-----==----========+++++++++++++===----------------------------------------------------------------------------==----=========================================================:----------::::---:::::-::-:-:--=========================+++++++======--------------------====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================================-------------------------------------------------------------------==================++++++++++++***+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------=++**######################################################################################*##########################+=----:::-::-=###################*-::::::::::::---=*######*+==---::::::::::::::::::::::::::::::::::::::::::::=###########################################################################################################################################################################+------::::::---==++**************************+++++*****************+++++=======--======---------:::::::::::::---===+++++*********++==-------------===================+++********++==--:::::::::::::---------==+++********************************#################################################################****************++++++++========---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++++===--::::::::::::::::::::::::::::::::::::-----------=======--:::::::--==++******************************************+++==--:::::::::::::--=+++******++=--:::::-==++*************************************++=---::::::::::::::::::::::--==++*************************************************************#############################################################################################******************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************##
###############*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################################*****************************+++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======----=======++++++++++++++++++++++==========================================================--------------------------=====+++++++++++++++++++=====--------------------------------------=====++++++=====-------------------=====+++++++++++++++=====-------------------------------::::::::::::::::::-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+*****++*++++++++**********************************+*++++*####*****************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%%########################################************+++++==================--==================================================+++++*##*******************************************************************************************************==============-----=-----========++++++++++*++++-----------------------------------------------------------------------------==---==========================================================::---------::::::::::::-::-:::-========================+++++++==-====--------==--------====-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================================----------------------------------------------------------------==================+++++++++++++***+-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++++++++++*****########################################################################################################*+=---::::::-+###################*-:::::::::::---=+#######+==---:::::::::::::::::::::::::::::::::::::::::::::=###########################################################################################################################################################################=-----:::::----==++**********************************************++++++====--------====-----::::::::::::::::::---====++++********++==-----------=====================+++*********+==--:::::::::::::--------===+++********************************#################################################################*****************++++++++=======---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++++++===--:::::::::::::::::::::::::::::::::::------------======--:::::::--==++******************************************+++==--:::::::::::::--=+++******++=--:::::--=++*************************************++=---::::::::::::::::::::::---=++*************************************************************#############################################################################################******************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************##
###############*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########################################################################################*****************************+++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======----=======++++++++++++++++++++++++++++=====================================================--------------------------====+++++++++++++++++++=====-------------------------------------=====+++++++=====-------------------=====+++++++++++++++=====--------------------------------------::::::------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+*+*+****+++++++***********************************+**+*+*#####****************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%%########################################************+++++==================-===================================================+++++*##*******************************************************************************************************==============--====---=========++++++++++*++++=-----------------------------------------------------------------------------==---==========================================================::-:-:----:::::::::::::::-:-:-=======================+++++++=------------====-------====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================-------------------------------------------------------------==================+++++++++++++***+--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------====++++++++=========++***#################################################################################################+-:::::::::+###################+:-:::::::::---=+*######*==----:::::::::::::::::::::::::::::::::::::::::::::=##########################################################################################################################################################################*-------------==+++*******************************************++++++=====----------====----:::::::::::::::::::----=====+++*******++==---------=========++++++=======++++*********++=--:::::::::::::--------===++********************************##################################################################*****************+++++++++======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++++++==---::::::::::::::::::::::::::::::::::---------:---====---:::::::--==+++*****************************************+++=--::::::::::::::--==++******++==--::::--=++************************************+++=---::::::::::::::::::::::---=+++************************************************************#############################################################################################******************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************##
################*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########################################################################################****************************++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======----======++++++++++++++++++++++++++++++++++++================================================------------------------=====++++++++++++++++++====--------------------------------------=====++++++======-------------------=====++++++++++++++=====---------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+******++**++++++***********************************+**+****#####**************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%%########################################***********++++++=================-===================================================++++++###*******************************************************************************************************===================----=========+++++++++++++*+------------------------------------------------------------------------------==--===========================================================::-:------:::::::------:--::-=======================++++++=----------======-------====---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================================---------------------------------------------------------==================++++++++++++++**+=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::::::::---------:::::::::----==++**#############################################################################################+-:::::-:-*###################-::::::::::---==*#######+=----::::::::::::::::::::::::::::::::::::::::::::::+##########################################################################################################################################################################=------------==++******************************************++++++======-----------====----::::::::::::::::::::------===+++******+++==-------======++++++++++++++++++++**********++=---::::::::::::--------==+++********************************##################################################################*****************+++++++++======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++++++==--::::::::::::::::::::::::::::::::::--------:::--------::::::::--==+++*****************************************+++=--::::::::::::::--==++******++==--::::--=+++***********************************+++=---::::::::::::::::::::::---==++************************************************************#############################################################################################******************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***###################################****************************##
################******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########################################################################################***************************++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======---=====++++++++++++++++++++++++++++++++++++++++++=============================================-----------------------=====+++++++++++++++++=====--------------------------------------=====++++++=====--------------------=====++++++++++++++=====---------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**+***++**++++++********************************************#####**************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%#########################################***********+++++=================-====================================================++++++###*******************************************************************************************************===================----=========+++++++++++*++-------------------------------------------------------------------------------===============================================================::-:-----:::::::----::::-:-:-=====================+++++==--=====---==++=-------====------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========================================-----------------------------------------------------==================++++++++++++++***=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::::::--::::::--::------:::::-:::-----::::::::--=++**#########################################################################################+-::::::-*##################*-:::::::::---==+#######*=----:::::::::::::::::::::::::::::::::::::::::::::::*#########################################################################################################################################################################*----------===+++****************************************++++++======-------------=====---:::::::::::::::::::::-------==+++*****+++===----=====+++++++++++++++++++++++**********++=---::::::::::::-------===++*********************************###################################################################****************++++++++++=====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++++++==--::::::::::::::::::::::::::::::::::--------::::-------::::::::--==+++*****************************************+++=--::::::::::::::--==++******++==--::::--==++***********************************++==---:::::::::::::::::::::::--==++************************************************************#############################################################################################******************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********#################################****************************##
################******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########################################################################################**************************++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======---=====++++++++++++++++++++++++++++++++++++++++++++++++=========================================--------------------======+++++++++++++++++=====--------------------------------------=====++++++=====--------------------=====+++++++++++++======----------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*+***+++++********************************************######**************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%#########################################***********+++++================-=====================================================+++++*##*******************************************************************************************************+===================---=========++++++++++++++=---------------------------------------------------------------------------===================================================================::-:-----:::::::::::::::::--====================++++++====+++++===++==------===----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============================================------------------------------------------------===================+++++++++++++++**=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::::::::::-:::-::::::-::::::--::::----==+*######################################################################################*=:::::=###################+::::::::----==+*#######+----:::::::::::::::::::::::::::::::::::::::::::::::-*#########################################################################################################################################################################+--=-=======+++****************************************+++++======---------------=====---::::::::::::::::::::::------==+++******++==========++++++++++++++++++++++++***********++==---:::::::::::-------==+++********************************####################################################################****************++++++++++=====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++++++==--::::::::::::::::::::::::::::::::::--------::::::----:::::::::---=+++*****************************************+++=--:::::::::::::::-==++******++==--::::--==++***********************************++==--::::::::::::::::::::::::--==++************************************************************#############################################################################################******************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************###############################****************************##
#################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########################################################################################**************************++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======---=====++++++++++++++++++++++++++++++++++++++++++++++++==============================================---------------======+++++++++++++++++=====-------------------------------------=====+++++++=====--------------------=====+++++++++++++=====-----------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**+*+++++*********************************************######*************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################%%%%%%%%%%%%%%%%%%%%%%%%########################################************+++++===============--=====================================================+++++*##*******************************************************************************************************+==================---==========+++++++++++++=--------------------------------------------------------------------------=====================================================================::-:-----:::::::::::::-:::-====================+++++====++++++++++==---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================---------------------------------------------====================++++++++++++++**+-::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::::-::::::::-:::::--:::::::::::--:::------:::::--==+**##################################################################################*-::::+##################*-:::::::----==+*#######*=---::::::::::::::::::::::::::::::::::::::::::::::::-#########################################################################################################################################################################*=========++++*****************************************++++=====-----------------=====---:::::::::::::::::::::::-----===++******+++=======++++++++++++******+++++++************++==------::::::::-------==+++********************************####################################################################****************++++++++++=====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++++++==--::::::::::::::::::::::::::::::::::--------::::::::::::::::::::--=++++****************************************+++=--:::::::::::::::-==++******+++=--::::--==++***********************************++==--::::::::::::::::::::::::--==++************************************************************##############################################################################################******************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************##############################*****************************#
##################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########################################################################################**************************++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======---====++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================-----=======++++++++++++++++======-------------------------------------=====+++++++=====--------------------=====+++++++++++++=====-----------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**+*++++************************+*********************######*************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%%%%%%%%%%%%%%%%%%%%%########################################***********++++++===============-=====================================================++++++###*******************************************************************************************************+==================---=========+++++**+*+++*=--------------------------------------------------------------------------======================================================================:-:-----:::::::-:::-:::-::-==================+++++====+++++++++++====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================================-----------------------------------------====================+++++++++++++++*+=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::---=+*################################################################################+-::-+##################+:::::-::---==++*#######=---:::::::::::::::::::::::::::::::::::::::::::::::::=#########################################################################################################################################################################+===++++++++******************************************+++=====------------------=====---:::::::::::::::::::::::-----===++******++++++=++++++++++**************+++*************+++==---------::--------===++*********************************#####################################################################***************+++++++++++=====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++++=---:::::::::::::::::::::::::::::::::::-------::::::::::::::::::::--==++++***************************************+++=--:::::::::::::::--=++*******++=--:::::-==++***********************************++==--::::::::::::::::::::::::--==++************************************************************##############################################################################################*****************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******++++********#############################*****************************#
#####################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****############################################################################################**************************++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================++++++++++++++++======-------------------------------------=====+++++++=====--------------------=====++++++++++++=====-------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+**+++++*********************************************#######************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%#######################################************+++++===============-======================================================++++++##********************************************************************************************************+=================---==========++++++**+*+*+-------------------------------------------------------------------------========================================================================:-:-----::::::::::::::-::-=================+++++====+++++++++++=====---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================================================--------------------------------------====================+++++++++++++++++=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------:-:-++-==**############################################################################+-:-*##################=::::::----==++*#######*--:::::::::::::::::::::::::::::::::::::::::::::::::::=#########################################################################################################################################################################++++++++++*******************************************+++====-------------:-----======---:::::::::::::::::::::------===++*******+++++++++++++**********************************++====----------------===+++********************************######################################################################***************+++++++++++=====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++==---:::::::::::::::::::::::::::::::::::-------::::::::::::::::::::--===+++++*************************************++==--:::::::::::::::--=++*******++=--:::::--=++***********************************++==--::::::::::::::::::::::::--==++************************************************************##############################################################################################*****************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****+++++++++******############################*****************************#
#####################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#############################################################################################*************************++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================+++++++++++++++++======-------------------------------------=====++++++======--------------------======++++++++++======-------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+*++++***********************************************#######***********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%#######################################***********++++++==============-=======================================================+++++*##********************************************************************************************************+=================--==========++++++++*++*+--------------------------------------------------------------------------========================================================================:-:-----::::::-::-::::-:-================++++======+++++==++=====------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================================-----------------------------======================+++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::------:--::==-::---=+*##########################################################################+--##################*-:::::----==++*########=-:-::::::::::::::::::::::::::::::::::::::::::::::::::+########################################################################################################################################################################*+***************************************************++++====-----------:::----======---::::::::::::::::::::------===++++*******++++++++***************************************+++=======----------===+++********************************#######################################################################***************++++++++++++====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===++++==--::::::::::::::::::::::::::::::::::::---=---:::::::::::::::::::::--===+++++************************************++==--:::::::::::::::--=+++******++==--::::--=+++**********************************++==--::::::::::::::::::::::::--==++************************************************************##############################################################################################******************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****++++++++++++****############################*****************************#
####################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##############################################################################################************************+++************++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++====================================================+++++++++++++++++======-------------------------------------=====++++++=====----------------------=====++++++++++======-------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+*++*************************************************########**********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%######################################***********+++++++======================================================================+++++*##********************************************************************************************************+================---=========++++++*++++++=-------------------------------------------------------------------------=========================================================================:-:-----:::-::-::::--::-===============+++++=====++++=========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================================================--------------------==========================+++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------:------:---::::---++*######################################################################*==##################+:::-::---==++**#######*--::::::::::::::::::::::::::::::::::::::::::::::::::::*########################################################################################################################################################################*****************************************************+++=====---------:::::---======---:::::::::::::::::::------====+++***********++******************************************+++++========-----====++++******************************#########################################################################***************++++++++++++====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++==--::::::::::::::::::::::::::::::::::::---=---:::::::::::::::::::::---====++++++*********************************++==--:::::::::::::::--==++******++==--::::--=+++**********************************++==--::::::::::::::::::::::::---=++************************************************************##############################################################################################*****************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****++++++++++++++****###########################*****************************#
###################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##############################################################################################************************+++************+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================++++++++++++++++++======-------------------------------------=====++++++=====----------------------=====+++++++++======---------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************************************************#######**********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%######################################***********++++++=======================================================================+++++###**+*****************************************************************************************************+================--==========++++++++*++*=-------------------------------------------------------------------------======++====+=============================================================:-:-----:::-:::::::--:--==============++++=====++++========------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================================================---------============================+++++++++++++++++=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----::--::::::::::::::::::::--------:::----------------------:::------:::::::::---=+*####################################################################++##################-:::-:---==++**########=-:-::::::::::::::::::::::::::::::::::::::::::::::::::-*#######################################################################################################################################################################******************************************************+++====--------::::::---======---::::::::::::::::::------====++++*********************************************************+++++++============++++******************************##########################################################################***************++++++++++++====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++==--::::::::::::::::::::::::::::::::::::---=----:::::::::::::::::::::----====++++++*******************************++==--:::::::::::::::--==++******++==--::::--==++**********************************++==--::::::::::::::::::::::::---=+++***********************************************************##############################################################################################*****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****++++=======++++****############################****************************#
##################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###############################################################################################***********************+++************+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================++++++++++++++++++=======------------------------------------=====+++++======----------------------======++++++++======---------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*****************************************************########*********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%#####################################************++++++=======================================================================++++*##***+*****************************************************************************************************+===========================++++++++*++*=--------------------------------------------------------------------------====++++===++=============================================================:-:-----::--:::--:--::-=============++++=====++++========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================================================================================+++++++++++++++++=-:::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::::::::------------------------------------:-::-:-:----::-:::--:::--=+*##################################################################*#################+-:::----==++***#######*-:::::::::::::::::::::::::::::::::::::::::::::::::::::-########################################################################################################################################################################******************************************************+++====------:::::::---======---:::::::::::::::::-----====++++++***********************************************************++++++++========+++++******************************##########################################################################***************++++++++++++====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===++==--::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::----====+++++++****************************++==--:::::::::::::::--==++******++==--::::--==++**********************************++==--::::::::::::::::::::::::---==++***********************************************************###############################################################################################****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=========++++****############################***************************#
#################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################**********************++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================+++++++++++++++++++============-------------------------------=====++++=======----------------------======++++++++=====----------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*****************************************************#########*********************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%#####################################***********++++++========================================================================++++*##*+*******************************************************************************************************+===========================++++++++*+++--------------------------------------------------------------------------====++++++==++=============================================================:-:-----::--:::-::-::-============+++++=====+++==========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================================================================================+++++++++++++++==-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------::::::::::::--------------------------------------:----::-----::---:::----:-----+*##################################################################################=:-:----==++***########=::::::::::::::::::::::::::::::::::::::::::::::::::::::=########################################################################################################################################################################******************************************************+++===------:::::::---======---::::::::::::::::-----====+++++*****************************************************************++++++++++++++++******************************###########################################################################***************++++++++++++====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+===--::::::::::::::::::::::::::::::::::::---==---::::::::::::::::::::::::-----=====++++++**************************++==--:::::::::::::::--==++******+++=--:::::-==++**********************************++==--:::::::::::::::::::::::::--==++***********************************************************###############################################################################################****************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****++++==========+++*****###########################***************************#
################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################*********************+++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================++++++++++++++++++++===============----------------------------======+++======------------------------======++++++======----------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************************************************########*********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%####################################************++++++=======================================================================+++++*##*++******************************************************************************************************===========================+++++++*++*+--------------------------------------------------------------------------=====++++++++++=============================================================:-:-----::---::-::-:--===========++++=====+++================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================================================================================++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------::::::::::------------------------------------------:--:-:-:::---::--:::-:-::--::--+*###############################################################################*-:-:---==++****#######+:-:::::::::::::::::::::::::::::::::::::::::::::::::::::+#######################################################################################################################################################################*******************************************************+++===-----:::::::---======---::::::::::::::::----====+++++********************************************************************++++++++++++********************************###########################################################################***************++++++++++++====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--======--::::::::::::::::::::::::::::::::::::--===---::::::::::::::::::::::::::------====++++++************************++==--::::::::::::::::--=++******+++=--:::::--=++**********************************++==--:::::::::::::::::::::::::--==++***********************************************************###############################################################################################****************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++===========++++****###########################***************************#
################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################**********************++**************++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============++++++++++++++++++++++===================-------------------------===============-------------------------======+++++=====-----------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************************************************#%#######********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%################################***********++++++========================================================================+++++##**+++++***************************************************************************************************===========================+++++*+*+++=-------------------------------------------------------------------------=====+++++++++++=============================================================:-:-:-------:::-:::--==========++++=====+++====================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================================================================++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------:::::::--------------------------------------------------------------------------:-=*##############################################################################+:-:---==++****########-:-::::::::::::::::::::::::::::::::::::::::::::::::::::-*######################################################################################################################################################################*******************************************************+++===-----:::::::---======---:::::::::::::::----===++++++************************************************************************++++++++********************************############################################################################****************+++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=====---::::::::::::::::::::::::::::::::::::--===---:::::::::::::::::::::::::::::-----====++++++**********************++=--:::::::::::::::::--=++*******++==--::::--=+++*********************************++==--:::::::::::::::::::::::::--==++***********************************************************##############################################################################################******************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++============+++****###########################***************************#
###############************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################*********************++**************++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============+++++++++++++++++++++++=====================-----------------------==============--------------------------======++++======-----------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************##########******************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################************++++++========================================================================++++*##**++++++*************************************************************************************************+===========================+++++++*+*=--------------------------------------------------------------------------=====+++++++++++=============================================================--:---------:::::--:==========+++=====+++=======================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================================================================================++++++++++++++++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------:::---------------------------------------------------------------------------::::-=+############################################################################*-::---==++*****#######+:::::::::::::::::::::::::::::::::::::::::::::::::::::::-#######################################################################################################################################################################*******************************************************+++==------::::::---======---::::::::::::::----====++++******************************************************************************************************************############################################################################****************+++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=====---::::::::::::::::::::::::::::::::::::--===---:::::::::::::::::::::::::::::::-----====+++++++*******************++=--:::::::::::::::::--=+++******++==--::::--=+++*********************************++==---::::::::::::::::::::::::--==++************************************************************#############################################################################################******************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++============+++****###########################****************************
###############************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##################################################################################################********************++**************++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++=======================-----------------------=============---------------------------======+++=====------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******************************************************#%#########******************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################************++++++========================================================================+++++*##*+++++++*************************************************************************************************+==========================+++++**++++-------------------------------------------------------------------------======++++++++++++=============================================================--:---------:::::-:-=========++=====+++=========================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================================================================================++++++++++++++++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------:---::--=+*#########################################################################+::---==++****+########-::-::::::::::::::::::::::::::::::::::::::::::::::::::::+######################################################################################################################################################################*******************************************************+++===------:::::---======---::::::::::::::----===++++******************************************************************************************************************#############################################################################****************+++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=====--:::::::::::::::::::::::::::::::::::::--====--::::::::::::::::::::::::::::::::::----=====++++++*****************++=--:::::::::::::::::--==++******++==--::::--==++*********************************++==---::::::::::::::::::::::::--==+++***********************************************************#############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****++++============+++****###########################****************************
##############************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###################################################################################################*******************++**************++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++++++++========================----------===----------============-----------------------------======+======-------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******************************************************#%##########*****************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################************++++++=====================================------==============================+++++###*+++++++*************************************************************************************************+==========================+++++***++--------------------------------------------------------------------------=====++++++++++++==============================================================--:---------::--::--=======+++====+++============================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================================================================================++++++++++++++++==-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------:::--:::::-=+*######################################################################-:---==++****+*#######+::::::::::::::::::::::::::::::::::::::::::::::::::::::::*######################################################################################################################################################################******************************************************+++===-------:::----======---:::::::::::::----===++++******************************************************************************************************************#############################################################################*****************+++++++++++=====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::--====--::::::::::::::::::::::::::::::::::::-----====++++++**************+++=--:::::::::::::::::--==++******++==--::::--==++*********************************+++=---::::::::::::::::::::::::---=+++***********************************************************#############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============+++****###########################****************************
##############************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###################################################################################################*******************+**************++++++++++++++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================--------==========---=============-----------------------------======+======-------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##*******************************************************#%###########****************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################*************++++++====================================-------==============================+++++###*+++*++++************************************************************************************************+=========================+++++****+--------------------------------------------------------------------------======++++++++++++=============================================================-:----:------::-:--==-=====++====+++==============================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================================================================+++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------:::-:---::--+***#################################################################+----==++****++########-::-::::::::::::::::::::::::::::::::::::::::::::::::::::-######################################################################################################################################################################*****************************************************++++===--------::----======---:::::::::::::---===++++*******************************************************************************************************************#############################################################################*****************+++++++++++=====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::--====--::::::::::::::::::::::::::::::::::::::-----====+++++++***********++==--:::::::::::::::::--==++******++==--::::--==++**********************************++==--::::::::::::::::::::::::---==++***********************************************************#############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============++++***###########################****************************
##############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###################################################################################################*******************++**************++++++++++++++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================-------==========================-------------------------------===========--------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*******************************************************#%%############**************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*************+++++++====================================-------===============================+++*##**+++++++++***********************************************************************************************+========================++++++***+=-------------------------------------------------------------------------======+++++++++++++=============================================================------:---------::=+=--==+++===+++=======-========================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================================================================++++++++++++++++++=-:--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:::::::--::::::::::::::::--------------------------------------------------------------------------------------------------------::---:::-::-----:---=+**##############################################################=---==++****++*#######=:-::::::::::::::::::::::::::::::::::::::::::::::::::::::+######################################################################################################################################################################**************************************************+++++====--------------======---:::::::::::-----==++++********************************************************************************************************************#############################################################################*****************+++++++++++=====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::--====--::::::::::::::::::::::::::::::::::::::::-----=====++++++*********++==--:::::::::::::::::--==++******++==--::::--==++**********************************++==---:::::::::::::::::::::::---==++************************************************************############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============++++***############################***************************
##############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################********************++*************++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================--------==========================-------------------------------===========--------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##********************************************************#%%#############************************##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################*************++++++======================================------===============================+++*##**++++++++++++*******************************************************************************************+=========================+++++++**=-------------------------------------------------------------------------======++++++++++++++=============================================================----:-----------:-+++=-=++===++++================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================================================================================++++++++++++++++++=-:::::-::::::::::::::::::::::::::::::::::::::::::::::::::------::----::::::----------------------------------------------------------------------------------------------------------------------------:---::-------:::-------=+*############################################################+---==++****+++#######*--:::::::::::::::::::::::::::::::::::::::::::::::::::::::*#####################################################################################################################################################################************************************************++++++=====--------------=======----::::::::-----==++++*********************************************************************************************************************#############################################################################*****************+++++++++++=====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::::::-----====+++++++******++==--::::::::::::::::::-==++******++==--:::::--=++**********************************++==---:::::::::::::::::::::::---==++************************************************************############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============++++****###########################***************************
##############********++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################*********************++*************++++++++++++++++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================--------===========================------------------------------===========---------------------------------------------------------------@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##********************************************************##%#%#############***********************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@%%%@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################*************++++++========================================----===============================+++###*+++*++++++++++******************************************************************************************+========================++++++++*+--------------------------------------------------------------------------======++++++++++++++=============================================================-:--:-----::---::=+++++++==++++=================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================================================================+++++++++++++++++=-:::::::::::::::::::::::::::::::::::::::::::::::-::::::----------------::::::-----------------------------------------------------------------------------------------------------------------------------------::--::---:--:-----=+**##########################################################=--==++****+++*#######=::::::::::::::::::::::::::::::::::::::::::::::::::::::::-######################################################################################################################################################################********************************************+++++++======---------------=======-----------------==+++**********************************************************************************************************************#############################################################################*****************+++++++++++=====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::::::::-----====+++++++***+++==--::::::::::::::::::--=+++*****+++=--:::::--=++***********************************++==--:::::::::::::::::::::::---==++************************************************************############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============++++****###########################***************************
##############**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################********************++*************++++++++++++++++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================-------==============================----------------------------==========----------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*********************************************************#%##%################*****################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################************++++++========================================-----================================+**##**+++++++++++*+++****************************************************************************************+=======================++++++++*+-------------------------------------------------------------------------=======+++++++++++++++============================================================-:--:-:-:-::--:::-++++++++++++==================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================================================+++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==++**#######################################################*--=+++****++=+#######+:-:-:::::::::::::::::::::::::::::::::::::::::::::::::::::+#####################################################################################################################################################################*****************************************+++++++=======----------------========----------------==+++************************************************************************************************************************###########################################################################******************+++++++++++=====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::::::::::-----=====++++++++++=--:::::::::::::::::::--=+++*****++==--:::::--==++**********************************++==---::::::::::::::::::::::---==++************************************************************############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============++++***###############################************************
#############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################********************++*************++++++++++++++++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================--------=====================================----------------------=========----------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#********************************************************#%##%######################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################************++++++========================================-----================================+**#**+++++++++++*+++*****************************************************************************************+=======================+++++++++=------------------------------------------------------------------------========+++++++++++++++============================================================-::-:--::--:-:-:-++++++++++++================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================================================================+++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==++++**#####################################################=-=+++****+++=########-:::--:-:::::::::::::::::::::::::::::::::::::::::::::::::-#####################################################################################################################################################################**************************************+++++++======----------==------===========--------------==++++************************************************************************************************************************###########################################################################******************++++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::::::::::::------====+++++++==--:::::::::::::::::::--=+++*****++==--:::::--==++**********************************+++=---::::::::::::::::::::::---==++************************************************************############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============++++***###############################************************
#############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################********************++*************++++++++++++++++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================--------=============================================--------------=========----------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************#%##%########################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################***********+++++++========================================-----======---=======================+**#**+++++++++++++++*****************************************************************************************=======================+++++++++=-----------------------------------------------------------------=------========++++++++++++++++===========================================================-:----:--:--:-:--=++++++++++=================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================================================================++++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++**##################################################*===++****++==*#######+:-::-:-:-::::::::::::::::::::::::::::::::::::::::::::::::+#####################################################################################################################################################################**********************************++++++=======----------================++=====-----------====+++*************************************************************************************************************************###########################################################################******************++++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::--====--::::::::::::::::::::::::::::::::::::::::::::::::::::-----======+====--:::::::::::::::::::--==++*****++==--:::::--==++***********************************++==---:::::::::::::::::::::---==++************************************************************############################################################################################*******************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============++++***###################################************########
#############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################*********************++*************++++++++++++++++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================--------==================================================--------==========-----------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*****************************************************##############################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################***********++++++=========================================------====----======================++**#**++++++++++++*+++++*************************************************************************************+=======================+++++++++------------------------------------------------------------------------========++++++++++++++++++=+========================================================-::-:--:--:----:-+++++++++===============================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================================================================+++++++++++++++++=--::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++++*################################################==+++****++==+#######*---:-:-:-::::::::::::::::::::::::::::::::::::::::::::::::-#####################################################################################################################################################################********************************+++++======------------=================+++++=================+++***************************************************************************************************************************##########################################################################******************++++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::---===--::::::::::::::::::::::::::::::::::::::::::::::::::::::------=======---:::::::::::::::::::--==++*****++==--::::::--=++***********************************++==---:::::::::::::::::::::---==++************************************************************############################################################################################*******************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============+++****###################################********############
#############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#################################################################################################*********************++*************+++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================-------======================================================================----------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%****************************************************#%%############################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**********++++++===========================================-------==----======================++****++++++++++*+++++*+++************************************************************************************+======================+++++++++-----------------------------------------------------------------=---=--========+++++++++++++++++++=+=======================================================+=--:-:--:-:---:-=+++++++===============================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================================================++++++++++++++++++=--::--:::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++===+##############################################*=+++****++===########=:-:--::::::::::::::::::::::::::::::::::::::::::::::::::::+####################################################################################################################################################################*******************************++++=====-------------============+=====++++++++==============+++****************************************************************************************************************************##########################################################################******************++++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::---===--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------=----::::::::::::::::::::--==++*****++==--::::::--==+************************************++==--:::::::::::::::::::::---==++************************************************************############################################################################################*******************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============+++****#######################################################
#############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****################################################################################################**********************++*************++++++++++++++++++++++++++++++++++++++++++++++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================-------========================================================================--------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***************************************************##%############################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**********++++++==============================================----===---======================+*****+++++++++++*++++**++++**********************************************************************************+=====================+++++++++=-----------------------------------------------------------------------========++++++++++++++++++++=========================================================+++=--::-::--:-:-+++++++=============================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================================================++++++++++++++++++++=-::-:-:::-:::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------==-----------------------------------------------------------------------------------------===+++++++++===--=*############################################+=+*****+++=-+#######*:----:-::::::::::::::::::::::::::::::::::::::::::::::::::-#####################################################################################################################################################################*****************************+++====--------------=======++++++++++++++++++++++++=========+++++****************************************************************************************************************************###########################################################################*****************++++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------:::::::::::::::::::::--==++*****++==--::::::--==++***********************************++==--:::::::::::::::::::::---==++************************************************************############################################################################################*******************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++=============+++****#######################################################
#############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################***********************++*************+++++++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================--------===================================================================================================-------------------------------::::-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***************************************************#%############################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################********+++++++==============================================================================++*****+++++++++++*+++++*++++*********************************************************************************++=====================++++++++=---------------------------------------------------------------=-------========++++++++++++++++++++=+========================================================++++-:::--:-:::-=+++++============================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================================================================++++++++++++++++++++=-::-::---:::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------======---------------------------------------------------------------------------------------===+++++++++===----=+##########################################*=+*****++====########=:--::-:---:::::::::::::::::::::::::::::::::::::::::::::::+####################################################################################################################################################################***+++++++++++**************+++===---------------=====++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************###########################################################################*****************++++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::---==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----::::::::::::::::::::::--==++*****++==--:::::::-==++***********************************++==--:::::::::::::::::::::---==++************************************************************############################################################################################********************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++=============+++****#######################################################
#############********+**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################***********************++*************+++++++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================--------=======================================================================================================-----------------:::::::::::::::*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%###%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************#%############################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################******+++++++++==============================================================================++******+*++++++++++*=+++++++++++++***************************************************************************+=====================+++++++++---------------------------------------------------------------=------=========+++++++++++++++++++++=++=======================================================++++=-:-:--::-:=+++============================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===============================================================++++++++++++++++++++=-::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------=========-------------------------------------------------------------------------------------===+++++++++==--------=*########################################++*****++===-*#######+:---:::------::------::------::::::::::::::::::::::::::::-####################################################################################################################################################################*++++++++++++++++**********++++==--------------=====+++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************###########################################################################*****************+++++++++++++===----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****++==-::::::::--=++***********************************++==---::::::::::::::::::::---==++************************************************************############################################################################################********************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++============++++****#######################################################
#############**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################***********************++**************++++++++++++++++++++++++++++++++++++++++++++++***+**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============--------==========================================================================================================-----------::::::::::::::::::=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##%%%%%%%%%%@@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##*************************************************########%#####################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****++++++++++=============================================================================++******+++++++++++++++=++*++++++++++**************************************************************************+====================+++++++++=---------------------------------------------------------------------=========++++++++++++++++++++++++========================================================+++++=-:-:-::-=++=========================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================================================++++++++++++++++++++++=--:-::::::-::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------====+====--------------------------------------------------------------------------------------==+++++++++==--------:-=+#######################################*+****++==--+########--:-::-----------------------:::::::::::::::::::::::::::::*####################################################################################################################################################################+++++=======+++++********++++===-------------====+++++++++++++++++++++********+++++++++++++********************************************************************************************************************************##########################################################################*****************+++++++++++++===----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::----=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****++=--::::::::--==++***********************************++=---::::::::::::::::::::---==++************************************************************###########################################################################################*********************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***+++=============++++***########################################################
#############**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################***********************++**************++++++++++++++++++++++++++++++++++++++++++++++***+**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============-------=============================================================================================================---------:::::::::::::::::::%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##%%%%%%%%%%@@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*************************************************#%#%%###%####################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****+++++++++==============================================================================++*+**#*++++++++++++++++=+++++++++++++++***********************************************************************+====================++++++++=----------------------------------------------------------------=----=========+++++++++++++++++++++++++========================================================++++++=----==++========================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================================================++++++++++++++++++++=--::::-----::::::::::::::::::------::--------------------------------------------------------------------------------------------------------------------====++++===-------------------------------------------------------------------------------------==+++++++++==------------=+*######################################*****+==---########=::-:------------------------:::::::::::::::::::::::::::::-####################################################################################################################################################################+=============+++++*****++++====-----------=====++++++++++++++*******************+++++++++*********************************************************************************************************************************##########################################################################*****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::----=---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==++*****++=--::::::::--==++***********************************++=---:::::::::::::::::::::--==++************************************************************###########################################################################################*********************###############################################################################################################%%%%%%#################################################################################################################################################################################################################################################################################################################################################################################***++++============++++***########################################################
#############**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################**********************+++***************+++++++++++++++++++++++++++++++++++++++++++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============-------=================================================================================================================-------::::::::::::::::.*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*************************************************###%####%%###################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%#################****+++++++++============================================================================+=++*++*#*++*+++++++++++*++=++++++++++++++++********************************************************************+==+=+===============+++++++++---------------------------------------------------------------------========+++++++++++++++++++*++++++=========================================================++++++++++++==========================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================================================++++++++++++++++++++++=--::::--------:::::::::::::::------------------------------------------------------------------------------------------------------------------------------===+++++===-------------------------------------------------------------------------------------==+++++++++==------------:--=*######################################***+==---*#######*:-::-:-----------------------:::::::::::::::::::::::::::::+###################################################################################################################################################################*==-------=====+++++**++++++======----========++++++++********************************++************************************************************************************************************************************#########################################################################*****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++*****++=--::::::::--==++***********************************++=---:::::::::::::::::::::--==++************************************************************###########################################################################################*********************############################################################################################################%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################################################################################***++++============+++****########################################################
############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###############################################################################################***********************+++***************++++++++++++++++++++++++++++++++++++++++++++***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============-------============================================================================================++++++++++++===========-------:::::::::::::::=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##***********************************************#**#%##%%##%###################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%#################****+++++++++==============================================================================+**++*#**+*++++++++++++*++=++++++++++++++++*******************************************************************+=++=+==============+++++++++=-------------------------------------------------------------------=========++++++++++++++++++++++++++==========================================================+++++++++++==========================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================================+++++++++++++++++++++++=-:::::--------:::::::::::::::--------------------------------------------------------------------------------------------------------------------------------==+++++++==-------------------------------------------------------------------------------------===+++++++===--------:--------=*######################################*+==---=########----::------------------------::::::::::::::::::::::::::::-###################################################################################################################################################################*-----------====++++++++++++================++++++**************************************************************************************************************************************************************************#########################################################################*****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=+++****++=--:::::::::--==+***********************************++==--:::::::::::::::::::::--==++************************************************************###########################################################################################**********************##########################################################################################################%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################***++++============+++****########################################################
############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###############################################################################################***********************+++***************++++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========-------============================================================================================+++++++++++++++============-------:::::::::::::%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##************************************************#*##%##%#######################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%#################****++++++++==============================================================================++*+++*##*+*+*+++++++++++*++=++++++++++++++++*****************************************************************++=+++++============++++++++++-------------------------------------------------------------------========+++++++++++++++++++++*+++++===========================================================++++++++++==========================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================================+==++++++++++++++++++++++=--:::----=----:::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------==+++++++==-------------------------------------------------------------------------------------===+++++++===--------------:----=*#####################################*==----########+:----------------------------:::::::::::::::::::::::::::::=###################################################################################################################################################################=----------====++++++++++++++========++++++++++****************************************************************************************************************************************************************************##########################################################################****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++***++==--:::::::::--==++**********************************++==--:::::::::::::::::::::---=+++***********************************************************###########################################################################################**********************#########################################################################################################%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################***++++===========++++***#########################################################
############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###############################################################################################***********************+++***************++++++++++++++++++++++++++++++++++++++++++++***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========-------=============================================================================================+++++++++++++++++++==========-------::::::::::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**********************************************#*##*#%%##%%#####################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%################*****++++++++==============================================================================++*+++*##**+**+++++++++*++*++=+++++++++++++++++++++***********************************************************+++++++++==========+++++++++++------------------------------------------------------------------========+++++++++++++++++++++++++++===========================================================+++++++++===========================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================================++++++++++++++++++++++++=--:::---==---:::::---::::::::::----------------------------------------------------------------------------------------------------------------------------------==+++++++===-------------------------------------------------------------------------------------==+++++++==--------:---:---------=+####################################*+=---+#######*-::--------------------------::::::::::::::::::::::::::::::*##################################################################################################################################################################+--------======+++++++++++++++++++++++++++++********************************************************************************************************************************************************************************#########################################################################****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++***++==--::::::::::--=++**********************************++==--:::::::::::::::::::::---=+++***********************************************************###########################################################################################**********************########################################################################################################%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################***+++============+++****#########################################################
############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##############################################################################################************************+++***************+++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========-------===============================================================================================++++++++++++++++++++==========---------:::::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********************************************##*##*##%%#%%#%####################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%################*****+++++++===============================================================================++++++*##****+++++++++++*++*++=++++++++++++++++++++++*********************************************************+++++++++==========++++++++++=-----------------------------------------------------------------========++++++++++++++++++++++*++++============================================================++++++++===========================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================================++++++++++++++++++++++=--::----===-:::------:::::::---------------------------------------------------------------------------------------------------------------------------------------==+++++++===-------------------------------------------------------------------------------------==+++++++==-------------------:-----+####################################*=--=########=::--------------------------::::::::::::::::::::::::::::::-##################################################################################################################################################################*=----=======+++++++****+++++++++++++++*************************************************************************************************************************************************************************************#########################################################################****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++*+++=--:::::::::::--==++*********************************++==--:::::::::::::::::::::---=+++************************************************************#########################################################################################************************######################################################################################################%%%%%%@@@@@%@@%%%%%%%#########################################################################################################################################################################################################################################################################################################################################################################***+++============+++***##########################################################
############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##############################################################################################************************+++***************+++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+======-------=============================================================================================++++++++++++++++++++++++++==========---------:-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##***********************************************##*###%%####%%####%############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%################*****+++++++===============================================================================++++++*###***+++++++++++++++*++=+++++++++++++++++++++**+++***************************************************++++++++++=========+++++++++++----------------------------------------------------------------========++++++++++++++++++++++++*+++=============================================================++++++=============================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================================================+++++++++++++++++++++=--::---===--:::-:::-::::-:-------------------------------------------------------------------------------------------------------------------------------------------==+++++++===-------------------------------------------------------------------------------------===++++++==-----------------:--:----:-+####################################+--########+:-:-------------------------:::::::::::::::::::::::::::::::+##################################################################################################################################################################=========+++++++++*********************************************************************************************************************************************************************************************************#########################################################################****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++++++==--::::::::::::-==++*********************************++==--:::::::::::::::::::::---=+++************************************************************#########################################################################################************************#####################################################################################################%%%%@@@@@@@@@%@@%%%%%%#########################################################################################################################################################################################################################################################################################################################################################################***+++===========++++**###########################################################
############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****################################################################################################**********************++****************++++++++++++++++++++++++++++++++++++++++++****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======-------===============================================================================================+++++++++++++++++++++++++++===========-------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**********************************************########%%%##%#%%%#%%%%%#############%##########%##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%#%###############******+++++================================================================================++++++**#*****++++++++++++++++++==+++++++++++++++++++**++++++++**********************************************+++++++++++=======+++++++++++=---------------------------------------------------------------=======+++++++++++++++++++++++++*++++============================================================++++++==============================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================================+===+++==+++++++++++++++++++=-----=====-:::::::---::::---------------------------------------------------------------------------------------------------------------------------------------------===+++++++===-------------------------------------------------------------------------------------===+++++===--------------------------::-+###################################*=+#######*-:-:------------------------:::::::::::::::::::::::::::::::-##################################################################################################################################################################+=++++++++++++++**************************************************************************************************************************************************************************************************************######################################################################****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++==--::::::::::::--==++********************************++==--:::::::::::::::::::::---=++**************************************************************#########################################################################################**********************######################################################################################################%%%@@@@@@@@@@@@@@%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################****+++===========+++***###########################################################
############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****################################################################################################**********************++****************++++++++++++++++++++++++++++++++++++++++++****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======-------========++++++++++++++++=========================================================================++++++++++++++++++++++++++++============---+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%###******************************************##########%@%##%%##%%##%##%%%%#%%%%%%%%%%%%%%%%%##%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%###############******++++=================================================================================++++++***#*****+++++++++++++++++++=+++++++++++++++++++*++++++++*********************************************++++++++++++=======+++++++++==--------------------------------------------------------------=========+++++++++++++++++++++++++**++=============================================================++++=================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================++=++++++++++++++++++=----=====--::::::::----::::---------------------------------------------------------------------------------------------------------------------------------------------===++++++++==--------------------------------------------------------------------------------------===+++===-----------------------------::=+############################################=-::--------------------------:::::::::::---::::::::::::::::+#################################################################################################################################################################*+++++++++++++****************************************************************************************************************************************************************************************************************######################################################################****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++==---::::::::::::--==++********************************++==---::::::::::::::::::::---=+++*************************************************************#########################################################################################**********************#####################################################################################################%%%@@@@@@@@@@@@@@@@%%%%%########################################################################################################################################################################################################################################################################################################################################################################***+++===========+++***###########################################################
############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################**********************+*****************+++++++++++++++++++++++++++++++++++++++++*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------=========++++++++++++++++===========================================================================++++++++++++++++++++++++++++++==========-=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@%#***************************************############%@%%%#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%##############*******++++==================================================================================++=+++**##*****+++++++++++++++*+++=++++++++*++++++++++++++++++++++*****************************************++++++++++++======+++++++++==--------------------------------------------------------------========+++++++++++++++++++++++++++***+============================================================+++========================--=========----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================++++++++++++++++++++=--=====---::::::::::-----::----------------------------------------------------------------------------------------------------------------------------------------------===++++++++==--------------------------------------------------------------------------------------=========---------------------------------=+##########################################+:-----------------------------:::::::::------::::::::::::::-*#################################################################################################################################################################+++++++++++**********************************************************************************************************####****************************************************************************************************######################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=======--::::::::::::::--==++*******************************+++=---::::::::::::::::::::---=+++*************************************************************#########################################################################################**********************#####################################################################################################%%%@@@@@@@@@@@@@@@@@%%%%%#######################################################################################################################################################################################################################################################################################################################################################################***+++===========+++**############################################################
############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################**********************+*****************++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------=======++++++++++++++++++++===========================================================================++++++++++++++++++++++++++++++++========#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************##############%@@%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##############*******++++==================================================================================+===+++*#*#*****++*++++++++++++++++=+++++++++++++++++++++++++++++++++*************************************++++++++++++++====++++++++==--------------------------------------------------------------========++++++++++++++++++++++++++++***++===========================================================+++=-========================-=========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================================+===+++++++++++++++++++=--====--::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------===++++++++==---------------------------------------------------------------------------------------=======------------------------------------=*########################################*:----------------------------:::::::::--------::::::::::::::=#################################################################################################################################################################*+++++++++++***********************************************************************************************#######################***#****************************************************************************************#####################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====---::::::::::::::--==++*******************************+++=---::::::::::::::::::::---=+++*************************************************************#########################################################################################**********************#####################################################################################################%%%@@@@@@@@@@@@@@@@@%%%%%#######################################################################################################################################################################################################################################################################################################################################################################***+++===========+++**############################################################
###########************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################*********************++*****************++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------======+++++++++++++++++++++++++==========================================================================++++++++++++++++++++++++++++++++++++=*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**********************************################%@@@%#%%@@%%%%%%%%%%%%%%%%%%%%%%%%#%%##%%%##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##############********+++==================================================================================+=-=++==**#***#**++++++++++++++*++++==++++++++++++++++++++++++++++++++++**********************************+++++++++++++====++++++++==--------------------------------------------------------------=======++++++++++++++++++++++++++++++***+===========================================================++=======================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================================++++++++++++++++++++++++=====--:::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++==-----------------------------------------------------------------------------------------===------------------------------:---------=*#######################################=---------------------------:::::::::---------:::::::::::::--*################################################################################################################################################################****+++++++++********************************************************************************************#########################********************************************************************************************#####################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::::::::--=+++*******************************++=---::::::::::::::::::::---=+++*************************************************************#########################################################################################***********************###################################################################################################%%%%@@@@@@@@@@@@@@@@@@%%%%%######################################################################################################################################################################################################################################################################################################################################################################***+++===========+++**############################################################
###########************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################*********************++*****************++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------======++++++++++++++++++++++++++++=======================================================================++++++++++++++++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*********************************##################@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%##%###%%%###%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##############********++++==================================================================================--=++=-+##**##***++++++++++++*++++++==++++++++++++++++++++++++++++++++++++******************************+++++++++++++++==+++++++==-==-----------------------------------------------------------=======+++++++++++++++++++++++++++++++****+=========================================================++=========================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================================+++++++++++++++++++++++++===--::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++==------------------------------------------------------------------------------------------------------------------------:-----------:-=*#####################################+:-------------------------::::::::::----------::::::::::::--=#################################################################################################################################################################**+*+++++++++*****************************************************************************************###########################*********************************************************************************************####################################################################****************++++++++++++++===-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::--==++*******************************++==--::::::::::::::::::::---=+++*************************************************************#########################################################################################***********************###################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@%%%######################################################################################################################################################################################################################################################################################################################################################################***+++===========++***###########################################################*
###########********+***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################********************++*****************+++++++++++++++++++++++++++++++++++++++*******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------=====++++++++++++++++++++++++++++++==========================================================================++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#********************************###################%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%#########%####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%#############*********++++==================================================================================--==++=-+#######**+++++++++++++++++++==++++++++++++++++++++++++++++++++++++++++*************************+++++++++++++++==+++++======----------------------------------------------------------=======+++++++++++++++++++++++++++++++++*+*++=======================================================++============================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================++++++++++++++++++++++++=---::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++===---------------------------------------------------------------------------------------------------------------------------------------=####################################*-----------------------------:::::::----===----:::::::::::---*################################################################################################################################################################****+++++++++***************************************************************************************############################**********************************************************************************************####################################################################****************++++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::::--=+++******************************++==--::::::::::::::::::::--==+++*************************************************************#########################################################################################***********************###################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@%%%######################################################################################################################################################################################################################################################################################################################################################################***+++===========++***########################################################****
###########********+***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################********************++*****************++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======------======++++++++++++++++++++++++++++++===========================================================================+++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%********************************####################%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%#%%##%%##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%#############********++++++=================================================================================---=+++--*#######**++++++++++++++++++++==++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++=++++++=======----------------------------------------------------------=====++++++++++++++++++++++++++++++++++++*+*+=====================================================+++===============================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================+++++++++++++++++++++++=--:::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++===---------------------------------------========-----------------------------------------------------------------------------------------=####################################=:----------------------------:::::----====----:::::::::::---=################################################################################################################################################################***+**++++++****************************************************************************************###########################***********************************************************************************************####################################################################****************++++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++******************************++==--:::::::::::::::::::---==+++*************************************************************#########################################################################################***********************###################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@%%%%######################################################################################################################################################################################################################################################################################################################################################################**+++===========++***#####################################################*******
###########***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################*********#***********++*************+++++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------======+++++++++++++++++++++++++++++++++=========================================================================+++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************************####################%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%#############*******++++++=================================================================================-----=+=--*#######*++++**++*++++++++++++==+++++++++++++++++++++++++++++++++++++++++++++++++**+********++++++++++++++++++++=====------------------------------------------------------------=====++++++++++++++++++++++++++++++++++++++++++====================================================+++==================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================================+==+++++++++++++++++++++--:::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++===-------------------------------------============----------------------------------------------------------------------------------------*####################################=------------::--------------:::::----=====---:::::::::::---=+################################################################################################################################################################**+**++++****************************************************************************************########################****************************************************************************************************####################################################################****************++++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=+++*****************************++==---::::::::::::::::::---==++**************************************************************##########################################################################################**********************##################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@%%%######################################################################################################################################################################################################################################################################################################################################################################**+++==========+++***###################################################*********
###########***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################*********************++*************+++++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------======++++++++++++++++++++++++++++++++++========================================================================+++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************###################%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%#####%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%############********++++++=================================================================================------++=--*#######**+*++*++*+++++++++++++==++++++++++++**+++++++++++++++++++++++++++++++++++*********++++++++++++++++====---------------------------------------------------------------======++++++++++++++++++++++++++++++++++++++++*++==================================================+++====================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================================++++++++++++++++++++++++-:::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------===+++++++++===-----------------------------------================--------------------------------------------------------------------------------------+#####################################+--------------:------------:::::----=====----::::::::::---=+*###############################################################################################################################################################*************************************************************************************************########################****************************************************************************************************####################################################################*****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****************************++==---::::::::::::::::::---==++**************************************************************##########################################################################################**********************##################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@%%%######################################################################################################################################################################################################################################################################################################################################################################**+++==========+++**##################################################***********
##########********++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################**********************++*************+++++++++++++++++++++++++++++++++++++++++********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------======++++++++++++++++++++++++++++++++++=========================================================================++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************#################%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%############********++++++================================================================================--------++=-=**######**+++*++++++++++++++*++===+++++++++++++++++++++++++++++++++++++++++++++++*++**++*++++++++++++++===-----------------------------------------------------------------=====+++++++++++++++++++++++++++++++++++++++++++*+==================================================++======================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================================+++++++++++++++++++++++++=-::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------===+++++++++===----------------------------------====++++++++++====------------------------------------------------------------------------------------:-######################################*---------:-----------------::::----======---::::::::::---==+###############################################################################################################################################################**********************************************************************************************#**#######################*****************************************************************************************************#####################################################################****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=+++*****************************++=---::::::::::::::::::---==++**************************************************************##########################################################################################**********************##################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@%%%######################################################################################################################################################################################################################################################################################################################################################################**+++==========+++**################################################*************
##########********+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###############################################################################################***********************+*************++++++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------======++++++++++++++++++++++++++++++++++++==========================================+++++++++++===================++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##**************************################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%############*******+++++++================================================================================---------++=--+*######**+**+*+++++++++++++*+++===++++++++++++*++++++++++++++++++++++++++++++++*++***++++++++++++++===--------------------------------------------------------------=--=====++++++++++++++++++++++++++++++++++++++++++++*+===================================================+=======================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================+++++++++++++++++++++++=---:::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===+++++++++===---------------------------------====++++++++++++====-------------------------------------------------------------------------------------+#######################################=----------:---------------:::----======---:::::::::----==+*##############################################################################################################################################################**********************************************************************************************#**##################**********************************************************************************************************#####################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****************************++==--::::::::::::::::::---==++**************************************************************##########################################################################################**********************##################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@%%%######################################################################################################################################################################################################################################################################################################################################################################**+++==========+++**################################################*************
##########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##############################################################################################************************+*************++++++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======------======+++++++++++++++++++++++++++++++++++++++++++++================================+++++++++++++++++=================++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#***********************###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%############******+++++++================================================================================---------=++=-=+***####**+**+*+++++++++++++*++++===++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++==-----------------------------------------====------------------==-=====++++++++++++++++++++++++++++++++++++++++++++++*+===========================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================++++++++++++++++++++++++-::=-:::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===+++++++++===--------------------------------===++++++++++++++++===------------------------------------------------------------------------------------=########################################*--:----------------------:::----======---::::::::-----=++*###############################################################################################################################################################************************************************************************************************##########*****************************************************************************************************************######################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=++*****************************++==---::::::::::::::::---==+++**************************************************************##########################################################################################***********************#################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################################################################################################################################################################################################################################################################################################################################################**+++==========+++**###############################################**************
##########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#############################################################################################***************************************+++++++++++++++++++++++++++++++++++++++++*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------======++++++++++++++++++++++++++++++++++++++++++++++++=============================++++++++++++++++++==================+++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*********************###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%###########*******++++++==============================================================================++----------=++=-=+****###**++*++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---------------------------------------=======------------------======+++++++++++++++++++++++++++++++++++++++++++++++*+=======+====================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========================++++++++++++++++++++++++++++-:::-=::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------===++++++++++==------------------------------====++++++++++++++++++===------------------------------------------------------------------------------------*########################################*=-:-----------------------:----=======----:::-------===++*##############################################################################################################################################################*************************************************************************************************#*************************************************************************************************************************######################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++****************************++==----:::::::::::::::---==++****************************************************************########################################################################################************************#################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################################################################################################################################################################################################################################################################################################################################################**+++==========+++***############################################****************
##########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#############################################################################################**************************************++++++++++++++++++++++++++++++++++++++++++********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------======+++++++++++++++++++++++++++++++++++++++++++++++++++=========================++++++++++++++++++++=================+++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*********************##############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%###########*********++++==============================================================================++-----------=++===+++****#**+*++++++++++++++++++++++====+++++++++++++++++++++++++++++++++++++++++++++++++++++++==------------------------------------=========-----------------=======+++++++++++++++++++++++++++++++++++++++++++++++++++=======+====================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================+++++++++++++++++++++++++++-::::--::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------===++++++++++==------------------------=========+++++++*******++++++===-----------------------------------------------------------------------------------+##########################################+--:--------------------------=======--------------===++*##############################################################################################################################################################***************************************************************************************************************************************************************************************************************************######################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****************************++==----:::::::::::::---==+++****************************************************************########################################################################################************************#################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################################################################################################################################################################################################################################################################################################################################################**++===========+++***############################################****************
#########******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#############################################################################################**************************************++++++++++++++++++++++++++++++++++++++++++********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------======+++++++++++++++++++++++++++++++++++++++++++++++++++++======================+++++++++++++++++++++=================+++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******************#############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@%%%%%%%@@@@@@%%%@@@@@@@@@@@%%@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%###########*********++++==============================================================================++------------=+++==++++***#**+**++++++++++++++++++++++====+++++++++++++++++++++++++++++++++++++++++++++++++++====--------------------------------==========-----------------=======++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============================++++++++++++++++++++++++===-:-::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------===++++++++++==--------------------============++++++***********+++++===---------------------------------------------------------------=============------=###########################################*=---------------------------==++===-----------=====+++*###############################################################################################################################################################**************************************************************************************************************************************************************************************************************************######################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++****************************++===---::::::::::::----==++*****************************************************************########################################################################################************************#################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################***++===========+++***#############################################***************
#########******++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################################################################################***************************************+++++++++++++++++++++++++++++++++++++++***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++++++++++++================++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************#*##########%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@%%%%%%@@@@@@@@@%%@@@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%##########**********+++============================================================================+++=-------------=+++==++++***##*+*++++++++++++++*+++++++++======+++++++++**+++++++++++++++++++++++++++++=+==++======--------------------------=============-----------------=======+++++++++++++++++++++++++++++++++++++++++++++++++++*+*++==+=========================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================+++++++++++++++++++++++++=--==-::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------===++++++++++==------------------===========++++++++************+++++===-------------------------------------------------------------==================----*############################################+--------------------------==++====-------=======++++**##############################################################################################################################################################********************************************************************************************************************************###***************************************************************************************#######################################################################***************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****************************++==-----:::::::::----==+++******************************************************************######################################################################################***************************###############################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################***++===========+++***############################################****************
#########*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***############################################################################################***************************************+++++++++++++++++++++++++++++++++++++++************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++================++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************##########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%%%%%%@@@@@@@@@@%%%@@%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%#########**********+++============================================================================+++=-------------===++==++++***##*+***+++++++++++++++++++++++====+==+++++++++++++*+++++++++++++++++++++++=========------------------------================-----------------=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+=============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========================++++++++++++++++++++++++=::-==:::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++++==-----------------=======+++++++++++***************+++++===----------------------------------------------------------=====++++++++++++=====--+#############################################+----:--------------------==+++===-----=======+++++****#############################################################################################################################################################*******************************************************************************************************************************##########**********************************************************************************######################################################################***************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++****************************+++==------::::------===++*******************************************************************######################################################################################***************************################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################**+++===========+++***############################################****************
#########*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***############################################################################################**************************************++++++++++++++++++++++++++++++++++++++++************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====------======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++=====++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%%%%%@@@@@@@@@@@@%%%%@%%%@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%#########**********++============================================================================+++=---------------=+++==+++++***#**+++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++======--------====----------===================-----------------===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================+=+++++++++++++++++++++++=-:::---:::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++++==-----------------====+++++++++++++*****************+++++===--------------------------------------------------------===+++++++++++++++++====-=##############################################*=-----------------:-----==++++===---====+++++++++****#############################################################################################################################################################***************************************************************************************************************************##############***********************************************************************************#####################################################################***************++++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****************************+++===-------------===+++*******************************************************************#####################################################################################*****************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################**+++===========+++***############################################****************
########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########################################################################################*****************************+**********++++++++++++++++++++++++++++++++++++++++************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====------======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******######*##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%########**********++===========================================================================++++=----------------=+++==++++++**##**+**++++++++++++++++++++++++===++======++++++++++++++++++++++++++====-----------===============================------------------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================+++++++++++++++++++++++=-::::-:-::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++++==-----------------===++++++++++++********************+++++===------------------------------------------------------===++++++*********++++=====*###############################################+----------------:-----==++++=========+++++++++******############################################################################################################################################################*************************************************************************************************************************################************************************************************************************#####################################################################***************+++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****************************+++===-----------===+++*********************************************************************####################################################################################*****************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################################################################################################################################################################################################***+++===========+++***############################################****************
########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***########################################################################################*******************************+**********++++++++++++++++++++++++++++++++++++++++************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-----======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********+++=========================================================================+++++=-----------------=+++===++++*+*##**+++++*++++++++++++++++++++++==++++++++++========================-----------================================------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+=======================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================+++++++++++++++++++++=-:::--::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++++===----------------===+++++++++************************+++++===----------------------------------------------------===+++***************+++====+################################################+-----==--------------==+++++======+++++++++++******#############################################################################################################################################################**********************************************************************************************************************##################*************************************************************************************####################################################################***************+++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++*****************************+++=====-----====++++************************************************************************#################################################################################******************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################################################################################################################################################################################################**+++============+++***############################################****************
########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#######################################################################################*******************************++**********+++++++++++++++++++++++++++++++++++++++*************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======---======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**********++=========================================================================+++++=------------------=+++===++++++**##**+++++++++++++++++++++++++++++====+======+===========+====-----------=================================-------------------==++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++======+==+========================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================++++++++++++++++++++=-::::-:::-::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++++===----------------====+++++***************************++++++===---------------------------------------------------==+++*****************+++====#################################################*=---++=-------------==+++++=====+++++++++**********############################################################################################################################################################****************************************************************************************************************########################**************************************************************************************####################################################################**************+++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++****************************++++===========++++**************************************************************************###############################################################################*******************************###############################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################################################################################################################################################################***+++============+++***############################################****************
########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##################################################################################************************************++**********++++++++++++++++++++++++++++++++++++++**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*********++=========================================================================+++++=-------------------=++++==+++++++**#****++++++++++++++++++++++++++++++=====================--------===================================---------------------==++++++++*+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++=======+==+==========================================================================================================---------------=====---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================++++++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===+++++++++++===-----------------===+++++*****************************++++===--------------------------------------------------===++*******************++++==*#################################################*=--+*+-------------==++++++++++++++++++++++***+***############################################################################################################################################################****************************************************************************************************************########################***************************************************************************************####################################################################*************+++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===++++***************************++++++=====+++++*****************************************************************************###########################################################################***********************************##############################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################################################################################################################################################################################################***++++===========++++***############################################****************
########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###############################################################################***************************************++**********++++++++++++++++++++++++++++++++++++++**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*********++========================================================================++++++=--------------------=+++++==++++++**##***+++++++++++++++++++++++++++++----------------------------========================------------------------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++====+==++=+===========================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================+++++++++++++++++++==-::::::::::-:::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===+++++++++++===-----------------===+++++******************************++++===-------------------------------------------------==+++********************+++==*###################################################+-+++-------------==++++++++++++++++**+++****+*++*###########################################################################################################################################################***************************************************************************************************************#########################****************************************************************************************###################################################################*************+++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===+++++***************************+++++++++++++*******************************************************************************##########################################################################***********************************##############################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################****+++============++++***############################################****************
########*******+++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****############################################################################*****************************************++***********++++++++++++++++++++++++++++++++*******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*********++=======================================================================++++++-----------------------+++++==+++++++**##**++++++++++++++++++++++++++++++++++====----------------------------------------------------------------------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================++++++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===+++++**++++===------------------===++++*******************************++++==------------------------------------------------===++*********************++++++####################################################*+++------:------==++++++++++++++++*******++++*+*###########################################################################################################################################################************************************************************************************************************############################****************************************************************************************###################################################################*************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----====+++++**************************+++++++++***********************************************************************************#####################################################################*************************************################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################***++++============++++***###########################################*****************
#######*********++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###########################################################################******************************************++************+++++++++**+++++++++++++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********++=======================================================================++++++------------------------=+++++++++++++***##**+++++++++++++++++++++++++++++++++++++========---------------------------------------------------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++===++=========================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================++++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===+++++**++++===------------------===++++*******************************++++==------------------------------------------------==+++**********************+++++################-+###################################**+--:----------===+++++++++++***********+++++++###########################################################################################################################################################************************************************************************************************************##########################******************************************************************************************####################################################################************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----====++++++***************************************************************************************************************************############################################################***************************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################***+++=============++++***###########################################*****************
######************+++**************+++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################********************************************+++***********++++*************+++++*****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********++=======================================================================+++++-------------------------==+++++++++++++**##***++++++++++++++++++++++++++++++===================-----------------------------------------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++===+++++++=======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================+++++++++++++++==-::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===++++***++++===-------------------==++++*******************************++++===-----------------------------------------------==++***********************+++++*###############*:-*###################################*-------------===++++++++++************+++++++*###########################################################################################################################################################***********************************************************************************************************#######################**********************************************************************************************###################################################################************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=====+++++***************************************************************************************************************************########################################################*****************************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################################################################################################################################################***++++============++++****###########################################*****************
######**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################********************************************+++************++***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********+================================================================++=====+++++--------------------------==++++++++++++++**##***+++++++++++++++++++++++++===================================----------------------------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++===++++++++++=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================++++++++++++++++==--::-::-:::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===++++***++++===-------------------==++++*******************************++++===-----------------------------------------------==++************************++++*################---=###################################+------------===+++++++++****++*******+++++++*###########################################################################################################################################################**********************************************************************************************************#####################*************************************************************************************************###################################################################************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------====+++++**************************************************************************************************************************###################################################*********************************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################****+++=============++++***############################################*****************
#####*****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################********************************************++++************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*********++==============================================================++======+++++---------------------------=++++++++++++++++*###**++++++++++++++++++++++++++++++++++++++++==========++++++++++++++==----------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+===++=+++++++++========================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================+++++++++++++++++=-::--::-:::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===++++***+++++==-------------------==++++*******************************++++===-----------------------------------------------==++************************++++*################-:---+##################################+-----------===++++++*****************+++++++*##########################################################################################################################################################*******************************************************************************************************########################**************************************************************************************************###################################################################***********++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----====++++**************************************************************************************************************************#################################################**********************************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################***++++============+++++***############################################*****************
#####*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#######################################################################*********************************************++++************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********+=============================================================+++======+++++---------------------------====++++++++++++++**###**++*+++++++++++++++++++++++*******+++++===+++++=++++++++*+++==--------------==++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+==+++++++++++===+======================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================+++++++++++++++=-:--:-::-:::-:::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===++++***+++++==-------------------===+++*******************************++++===-----------------------------------------------==++************************++++*################=-----=*#################################*--:--------==+++++******************+++++++*##########################################################################################################################################################******************************************************************************************************#########################**************************************************************************************************###################################################################************+++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----====++++************************************************************************************************************************###############################################************************************************################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################***++++===========+++++****############################################*****************
####*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#######################################################################*********************************************+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********++===========================================================++++======++++=---------------------------======++++++++++++++**###**+*++++++++++++++++++++++*******++++=========+++++++++==-------------==++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++=+==++++++++===+++++++=================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================+++++++++++++++=----::--::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===++++***+++++==-------------------===+++*******************************++++==------------------------------------------------==++*************************+++*################*-------*#################################*----------==++++***+***************+++++++*##########################################################################################################################################################****************************************************************************************************###########################**************************************************************************************************###################################################################************+++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------===++++***********************************************************************************************************************###########################################****************************************************###############################################################################################%@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################****++++===+=====+++++++***#############################################*****************
###***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******######################################################################*********************************************+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********+==========================================================+++++======++++=---------------------------========++++++++++++++**###***++++++++++++++++++++++*****++=++==++++++++++++==------------==++++***++*++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===+++++++====++++++**++++==============================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================++++++++++++++=--::----::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===++++***+++++==-------------------===+++*******************************++++==------------------------------------------------==++*************************++++#################--------+#################################*---------==++++*******************++*+*****#########################################################################################################################################################****************************************************************************************************##########################***************************************************************************************************###################################################################************+++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----===++++***********************************************************************************************************************#######################################*******************************************************###############################################################################################%@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################***+++++===++++++++++++****#############################################*****************
###*******+++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#####################################################################*********************************************++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*********+========================================================++++++=======+++=----------------------------========++++++++++++++++*####**+++++++++++++++++++++**+++++++=++==+++++=-----------===+++****+++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++**+++++==++++++++++++++==============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================+++++++++++++++=-:-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==+++++***+++++==-------------------===+++*******************************++++==------------------------------------------------==++**************************++**################---------+#################################*=-------==++++********************+*******##########################################################################################################################################################************************************************************************************************############################****************************************************************************************************####################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----===++++***********************************************************************************************************************##################################**********************************************************################################################################################################%@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################***+++++++++++++++++++****##############################################*****************
#********+++++**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#####################################################################*********************************************++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%############******+========================================================++++++=======+++=----------------------------==========++++++++++++++++**####***++++++++++++++++*+++++++++===++++**+----====++++++*****+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++*++++++===++++++++**+++================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================+++++++++++++=-:--:---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==+++++****++++==-------------------===+++*******************************++++==------------------------------------------------==++**************************++**################=---------###################################=:-----==++++****************************##########################################################################################################################################################***********************************************************************************************##############################***************************************************************************************************####################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++++**********************************************************************************************************************###############################*************************************************************################################################################################################%@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################***+++++++++++++++++******##############################################*****************
********+++++++*****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##################################################################*********************************************+++++**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**##########*****++=====================================================+++++++=======+==-----------------------------===========++++++++++++++++****####***+++++++++++++*++++++*++=+++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++=++++++++***+++==================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================++++++++++++--:--::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==++++*****++++==-------------------===+++*******************************++++==------------------------------------------------==++******************************################*---------*###################################=-:---==++++*****************************#########################################################################################################################################################**********************************************************************************************###############################***************************************************************************************************####################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----===+++*********************************************************************************************************************############################*****************************************************************###############################################################################################%@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################****+++++++++*************###############################################*****************
*******+++++++++********************+********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************##############################################################*********************************************+++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########******##########****++===================================================+++++++++========-------------------------------============++++++++++++++=+******##**+++++++++++++++++++++++++++*+++***++**+++++++++++***++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++===++++++++++++++====================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================+++++++++++=--:::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==++++*****++++==-------------------===+++********************************+++==------------------------------------------------==++*******************************################---------+####################################=----==++++*****************************#########################################################################################################################################################*********************************************************************************************##################################*************************************************************************************************####################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++++*******************************************************************************************************************########################*********************************************************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@%%%#############################################################################################################################################################################################################################################################################################################################################################***+++++++++************#################################################*****************
******++++++++++*******************+++++******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************###########################################################**********************************************+++++*********************************************************************************************++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*********#########****++==================================================++++++++++======--------------------------------============++++++++++++++++++*********+++++++++++++*+++++++++**++++*++++*++++++**++++++++++++++++*++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++***+++======================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================+=+++++++++=-:::---::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==++++*****++++==-------------------===+++********************************+++==------------------------------------------------==++*******************************################=--------+#####################################+---==++++******************************########################################################################################################################################################*******************************************************************************************#####################################************************************************************************************************####################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++++*******************************************************************************************************************####################***********************************************************************################################################################################################%@@@@@@@@@@@@@@@@@@@@%%%#############################################################################################################################################################################################################################################################################################################################################################***+++++++++***********##################################################*****************
******+++++++++++******************+++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************########################################################***********************************************++++++*******************************************************************************************+++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########***********#######*****++=================================================++++++++++=====---------------------------------======-=====+====++++++++++++++++*******+++++++++++++++++++++*++++*+++***+++******+++++**+++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================++++++++++=-::----::--::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==++++*****++++==-------------------===+++********************************+++===-----------------------------------------------==++*******************************################+--------=######################################+--==++++******************************########################################################################################################################################################****************************************************************************************########################################************************************************************************************************####################################################################*************+++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----==++++*******************************************************************************************************************#################**************************************************************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@%%%#############################################################################################################################################################################################################################################################################################################################################################***++++++++*********#####################################################*****************
****++++++++++++++****************++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#################################################*************************************************+++++++******************************************************************************************+++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*************#######****+================================================++++++++++++====----------------------------------========-====--==++++++++++++++++++**++++++++++++++++++++*+**+++**+**+++++++**++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++*++++==========================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================+++++++++==--:--::::---::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==++++*****++++==-------------------===+++********************************+++===-----------------------------------------------==++*******************************################*--------=#######################################+-==++++*******************************########################################################################################################################################################************************************************************************************############################################***********************************************************************************************####################################################################*************+++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++++********+++********************************************************************************************************#############****************************************************************************###############################################################################################%%@@@@@@@@@@@@@@@@@@%%%##############################################################################################################################################################################################################################################################################################################################################################***+++++++****###########################################################*****************
**+++++++++++++++++***************+++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************+++++++*****************************************************************************************+++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########************+*#######****+==============================================+++++++++++++====----------------------------------======-===--------=++++++++++++++++++++++++++++++*++++++*++**+*++*++*++**+++******+++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++=+++++*++++++++++++++++++==+++++++**+++++++============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================+++++++++=-::--::--:-::::--:----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==++++*****++++==-------------------===+++********************************+++===-----------------------------------------------==++*******************************################*---------########################################+==++++*******************************########################################################################################################################################################************************************************************************************############################################***********************************************************************************************####################################################################*************+++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===+++********++++********************************************************************************************************##########******************************************************************************###############################################################################################%%%@@@@@@@@@@@@@@@@@%%%##############################################################################################################################################################################################################################################################################################################################################################****+++++****############################################################*****************
++++++++++++++++++++*************+++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************+++++++****************************************************************************************++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%@@@@@@%%%@@@@@%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***********++*######*****+=============================================+++++++++++++===------------------------------------========----------==++++++++++++++++++++++++++++++++++******++**+++++++++++***+++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++*+++++++++=============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================+++++++--*=:--:::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===++++*****++++==-------------------===+++********************************+++===-----------------------------------------------==++********************************################=--------*########################################*=++++**+****************************########################################################################################################################################################*********************************************************************************#################################################*********************************************************************************************####################################################################*************++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==+++******++++++***********************************************************************************************************************************************************************************************################################################################################################%%%@@@@@@@@@@@@@@@@%%%###############################################################################################################################################################################################################################################################################################################################################################*****+*****#############################################################*****************
+++++++++++++++++++++************+++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++****************++++++++++++++*********************************************************************+++++++****************************************************************************************+++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########************++**######****=============================================+++++++++++++===------------------------------------=======-------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++=============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================++++++**+:-*+::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------==----------------------------------------------------------------------------------===++++*****++++===------------------===+++********************************++++==-----------------------------------------------==++********************************################+--------*#######*+################################*+++*+*******************************#######################################################################################################################################################*********************************************************************************#################################################*********************************************************************************************####################################################################*************++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===++******+++++++**********************************************************************************************************************************************************************************************################################################################################################%%%%@@@@@@@@@@@@@@%%%%###############################################################################################################################################################################################################################################################################################################################################################***********##############################################################****************
+++++++++++++++++++++************++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************+++++++***************************************************************************************++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*************++*#######***+===========================================++++++++++++++===-------------------------------------======---------------=+++++++++++++++++++++++++++++++++*++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++==================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================++++++*****-:#*::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------====---------------------------------------------------------------------------------===++++*****++++===------------------===+++*********************************+++===----------------------------------------------==++********************************################*--------*########-=################################*++*********************************#######################################################################################################################################################********************************************************************************##################################################*********************************************************************************************####################################################################*************++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++******+++++++***********************************************************************************************************************************************************************************************################################################################################################%%%%@@@@@@@@@@@@%%%%#################################################################################################################################################################################################################################################################################################################################################################*********###############################################################****************
++++++++++++++++++++++***********+++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++++++*************************************************************************************+++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**************++*#######***+==========================================+++++++++++++++==-------------------------------------=====-----------------==++++++++++++++++++++++++++++++++++****+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++*++++**+++**+++++====================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================+==++++******+-**-::::::::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------=====--------------------------------------------------------------------------------===++++*****++++===------------------===+++*********************************+++===----------------------------------------------==++********************************################*--------+########=-=*###############################**+********************************#######################################################################################################################################################********************************************************************************##################################################*********************************************************************************************####################################################################**************+++++++++++===----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=++******++++++++**********************************************************************************************************************************************************************************************################################################################################################%%%%%%%@@@@@@@@%%%%##################################################################################################################################################################################################################################################################################################################################################################********################################################################****************
+++++++++++++++++++++++**********+++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************+++++++++*************************************************************************************++++++++++++++*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*************++*########***+=========================================+++++++++++++++==--------------------------------------====------------------==++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++*+++++++***++++++======================================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================++++**********=**-:::::::--------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------======--------------------------------------------------------------------------------===++++*****++++===------------------===+++*********************************+++===----------------------------------------------==++********************************#################=-------+########=---#################################**********************************######################################################################################################################################################********************************************************************************###################################################*********************************************************************************************####################################################################*************+++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=+++****++++==+++***********************************************************************************************************************************************************************************************################################################################################################%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################################################################***###################################################################****************
+++++++++++++++++++++++***********+++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++=====================================+++++++++++++++++++++++++++++++++*************************+++++++++************************************************************************************+++++++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+*#########***+=======================================+++++++++++++++++=--------------------------------------===--------------------===+++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++*+++**++++++++===+++===================================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================+++*************+*#-:::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------======--------------------------------------------------------------------------------===++++******+++===------------------===+++*********************************+++===----------------------------------------------==++*********************************################+-------=########=----#################################*********************************######################################################################################################################################################*******************************************************************************####################################################*********************************************************************************************####################################################################*************+++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++****+++====+++************************************************************************************************************************************************************************************************##############################################################################################%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################****************
+++++++++++++++++++++++***********++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++==================================================+++++++++++++++++++++++***********************+++++++++***********************************************************************************+++++++++++++++++********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+*##########***+=====================================++++++++++++++++++=--------------------------------------------------------------====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+**+++++++==++++=======================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================++++*****************#-:::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------========-------------------------------------------------------------------------------===++++******+++===------------------===+++*********************************+++===----------------------------------------------==++*********************************################*-------=########=-----#################################*********************************#####################################################################################################################################################*******************************************************************************####################################################*********************************************************************************************####################################################################*************+++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++****++=====+++************************************************************************************************************************************************************************************************################################################################################################%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################****************
++++++++++++++++++++++++***********+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++===================================================================++++++***********************+++++++++***********************************************************************************+++++++++++++++++***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*************+*###########***++==================================+++++++++++++++++++---------------------------------------------------------------=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++*+++*++*+++++===++===++++====================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===============+++++*******************#=:::::::----------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------========-------------------------------------------------------------------------------===++++******+++===------------------===+++**********************************+++==----------------------------------------------==++*********************************################*-------=########=------*###############################*+*******************************#####################################################################################################################################################*******************************************************************************####################################################*********************************************************************************************####################################################################*************+++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++****++======++*************************************************************************************************************************************************************************************************################################################################################################%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################***************
++++++++++++++++++++++++***********+++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++====================================================================++++++**********************++++++++++*********************************************************************************+++++++++++++++++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################**************############*****+================================++++++++++++++++++++---------------------------------------------------------------========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+++++++++++++++++++++++++++++++++++**+++++++++*++***++++++++++++==++=========================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================++++*******************#*#=:::::-:-:--------------------------::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------========-------------------------------------------------------------------------------===++++******+++===------------------===+++**********************************+++==----------------------------------------------==++*********************************################*--------########+-------*###############################*+*******************************#####################################################################################################################################################*******************************************************************************###################################################*********************************************************************************************####################################################################*************++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++****++===-==++**************************************************************************************************************************************************************************************************################################################################################################%%%%%%%%%#################################################################################################################################################################################################################################################################################################################################################################################################################################################**************
++++++++++++++++++++++++************+++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++=====================================================================++++*********************+++++++++++*********************************************************************************++++++++++++++++++++*************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################**************########**####***++===============================+++++++++++++++++=++----------------------------------------------------------------==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++***++++*++++++++++++++++++==++=========================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================+++**********************###+:-:-::-----------------------------::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------========--------------------------------------------------------------------------------==++++******+++===------------------===+++**********************************+++==----------------------------------------------==++*********************************################*--------*#######+--------*###############################*+******************************#####################################################################################################################################################*******************************************************************************###################################################*********************************************************************************************####################################################################*************++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++***+++==--==+++**************************************************************************************************************************************************************************************************##################################################################################################%%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################*************
++++++++++++++++++++++++*************++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++====================================================================+++++********************+++++++++++*********************************************************************************++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################*************#######****###**+**+=============================++++++++++++++++++=++----------------------------------------------------------------============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++****++++++++=++++++++++==++=========================================================================================================================================-=----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============++++**********************#####*-::--:-:---------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------=========--------------------------------------------------------------------------------==++++******+++===-------------------==+++**********************************+++===---------------------------------------------==++*********************************#################=-------*#######*---------*###############################*******************************#####################################################################################################################################################*******************************************************************************###################################################**********************************************************************************************###################################################################*************++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++***++===---==++****************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************
++++++++++++++++++++++++**************++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++===================================================================++++********************+++++++++++*********************************************************************************+++++++++++++++++++++*****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################************#######****###**++**+============================++++++++++++++++++=++=---------------------------------------------------------------==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++=+++==+++++++++++++++==============================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============+++*************************######=:-:---:---------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------===++====--------------------------------------------------------------------------------==++++*****++++===-------------------==+++**********************************+++===---------------------------------------------==++*********************************#################+-------+#######*----------*###############################******************************#####################################################################################################################################################*******************************************************************************###################################################**********************************************************************************************###################################################################*************++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++***++==----==++*****************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
++++++++++++++++++++++++****************+++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++================================================================+++++*******************++++++++++++*********************************************************************************+++++++++++++++++++++**********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***********#%%######***###**++*++===+=+++==================+++++++++++++++++++=++=---------------------------------------------------------------================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##***++=++=+++++++++++++++++++==============================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============++++************************#########+:-::-:----------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------===+++===--------------------------------------------------------------------------------==++++*****++++===-------------------==++++*********************************+++===---------------------------------------------==++*********************************#################+-------+########=----------*###############################*****************************#####################################################################################################################################################*******************************************************************************###################################################**********************************************************************************************###################################################################*************++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====---::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++***++==----==+++****************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
++++++++++++++++++++++******************+++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++================+++++===========++++++******************++++++++++++*********************************************************************************++++++++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################**********#%%######**+*##***+++++==+++++++================+++++++++++++++++++=++=----------------------------------------------------------------=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++*********####***++==++++++++++++++++++++++++===============================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======+===++++++************************###########*:--:-:----------------------------::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------===++++===--------------------------------------------------------------------------------==++++******+++===-------------------==++++*********************************+++===---------------------------------------------==++*********************************#################*-------+########=-----------*################################****************************####################################################################################################################################################*******************************************************************************###################################################**********************************************************************************************###################################################################*************++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====---::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++**+++==-----==++****************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
+++++++++++++++++++++*********************+++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++++++***********************************************************************************+++++++++++++++++++******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*********#%%%######**++*##***++++++++++++++++============++++++++++++++++++++=++=----------------------------------------------------------------====--=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++*****########**+++=++++++++++++++++++++++++++++===============================================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====++++++++++++************************##############=:-----:--------------------------::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------===++++===--------------------------------------------------------------------------------===+++******+++===-------------------==++++*********************************++++==---------------------------------------------==++*********************************#################*-------+########=------------*#################################**************************####################################################################################################################################################********************************************************************************##################################################**********************************************************************************************###################################################################*************++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--:::::::::::--=====---::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++*++++==-----==++****************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
+++++++++++++++++++++**********************+++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++*************************************************************************************+++++++++++++++++*********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################******#%%#######**++*###**++++++++++++++++============++++++++++++++++++++=++=----------------------------------------------------------------====----============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++*****########**++++++++++++++++++++++++++++++++++++===============================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===++++++++++++*************************################+:---:----------------------------::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------===+++++===--------------------------------------------------------------------------------===++++*****+++===-------------------==++++*********************************++++==---------------------------------------------==++*********************************#################*-------+########+-------------*#################################*************************####################################################################################################################################################********************************************************************************##################################################**********************************************************************************************###################################################################*************++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::--=====---::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++++==------==+++***************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
+++++++++++++++++++++***********************++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++***************************************************************************************+++++++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################******#%%#######**+++*###*++++++++++++++++++=========++++++++++++++++++++==++=-----------------------------------------------------------------===------===============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************###########**++=++++++++++++++++++++++++++++++++++++================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====++++++++++*************************###################---:-----------------------------::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------===++++++===-------------------------------------------------------------------------------===++++****++++===------------------===++++**********************************+++==---------------------------------------------==++*********************************#################*-------=########+--------------*#############################*###*+*****+****************####################################################################################################################################################******************************************************************************#####################################################*********************************************************************************************####################################################################************++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::--======--:::::::::::::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++++==------==+++*****************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************
++++++++++++++++++++************************+++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++****************************************************************************************++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################*****#%%#########**+***###*++++++++++++++++++========++++++++++++++++++++==++=-----------------------------------------------------------------====-------================+=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#*#############***+++=++++++++++++++++++++++++++++++++++++++=================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=----====++++++++++**************************####################+:-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------==--------------------------------------===++++++===-------------------------------------------------------------------------------===++++*****++++==------------------===++++**********************************+++==---------------------------------------------==++*********************************##################=------=########+---------------*####%########################*###**+********************####################################################################################################################################################*******************************************************************************#####################################################********************************************************************************************####################################################################************++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::--======--:::::::::::::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++==--------==++*****************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************
++++++++++++++++****************************++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++***************************************+++++++++++**********************++++++++******************************************************************************************++++++++++++++************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*****#%%#########*******###*++++++++++++++++++======+++++++++++++++++++++==+++-----------------------------------------------------------------======-------=============+==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#****++++++++++=+++++++++++++++++++++++++++++++++++==================================================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====+++++++++************************##########################-:------------------------------::::::::::::::::::::::::::::::::::::::::::::::::------------------==----------------------------------------===++++++===--------------------------------------------------------------------------------==+++++****++++==-----------------===++++***********************************+++==---------------------------------------------==++*********************************##################+------=########+---------------=#############################**###**********************####################################################################################################################################################*******************************************************************************#####################################################********************************************************************************************####################################################################************+++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::--======--:::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++===--------==++*****************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************
++++++++++++++++****************************++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++********************************************************************************++**********************************************************************************************++++++++++++*************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################****#%%##########**#****###*++++++++++++++++++====++++++++++++++++++++++==+=+=----------------------------------------------------------------=======--------======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++++========================================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======+++++++++************************############################+-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------===+++++++===--------------------------------------------------------------------------------===++++****++++==---------------=====++++***********************************+++==---------------------------------------------==++*********************************##################+-------########+----------------=#############################**####*******************+####################################################################################################################################################*******************************************************************************######################################################********************************************************************************************###################################################################************+++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::--======--:::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++===-----:---==++*****************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
+++++++++++++*******************************++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************++++++++++++**************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################**#%%############*#*****###*+++++++++++++++++++==++++++++++++++++++++++==+===----------------------------------------------------------------=========--------====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=--=====++++++++*************************##############################*-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------===+++++++===--------------------------------------------------------------------------------===++++****++++==-------------======++++************************************+++==---------------------------------------------==++*********************************##################*-------########*-----------------=############################***####*************++**++####################################################################################################################################################********************************************************************************#####################################################********************************************************************************************###################################################################************+++++++++++===----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::--======--::::::::::::::::::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=======----:::----==++*****************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
++++++++++++********************************+++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************++++++++++++****************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################**#%%##############**#***###*++++++++++++++++++++++++++++++++++++++++++=++===-----------------------------------------------------------------=======-==--------==================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================++++++++===================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========+++++++*************************################################*-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------===+++++++====-------------------------------------------------------------------------------===++++****++++==-----------=======+++++***********************************++++==---------------------------------------------==++*********************************##################*-------*#######*=-----------------=############################***####**************++++*###################################################################################################################################################********************************************************************************#####################################################********************************************************************************************###################################################################***********++++++++++++===----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::--======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---======----:::::---==++*************+++*************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
+++++++++++**********************************++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************++++++++++++******************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*#%%%################*****####++++++++++++++++++++++++++++++++++++++++==++===-----------------------------------------------------------------=======-------------================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================+++++++++++++++++++=========================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=-=======+++++++**************************#################################*-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------==++++++++====--------------------------------------------------------------------------------===++++***++++==---------======++++++++***********************************++++==--------------------------------------------===++*********************************##################*------=*#######*=------------------=###########################*+**####*************++++*###################################################################################################################################################********************************************************************************####################################################*********************************************************************************************###################################################################***********++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::--======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---======---::::::---==++************+++++++**********************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
+++++++++++**********************************+++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++***********************************************************************************************************************************************************************************+++++++++++********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%#################*#****####+++++++++++++++++++++++++++++++++++++++==++===-----------------------------------------------------------------=====+=---------------=============+++++++++++==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================+++++===============================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========+++++****************************###################################-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------==++++++++====--------------------------------------------------------------------------------===++++***++++==--------=====+++++++++************************************++++==--------------------------------------------===++*********************************##################*----=++########*--------------------+###########################****####*******++***++++*###################################################################################################################################################*********************************************************************************###################################################*********************************************************************************************###################################################################***********+++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::--======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====----:::::::--==++***********++++++++++********************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
+++++++++++*****************************+++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++*********************************************************************************************************************************************************************************+++++++++++*********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%####################*****####*+++++++++++++++++++++++++++++++++++++==+====------------------------------------------------------------------====++=------------------===++=====+++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================+++++++++++==++++=================================================================-============================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========++++**************************#######################################+------------------------------------::------::::::::::::::::::::::::::::::::::----------------------------------------------------------===++++++++=====-------------------------------------------------------------------------------===++++*++++++===------=====+++++++++*************************************++++==--------------------------------------------===++*********************************##################*====+*+########*---------------------+###########################*+**####*+***+****+++++*###################################################################################################################################################***********************************************************************************#################################################**********************************************************************************************#################################################################************++++++++++++===----:::::::::::::::::::::::::::::::::::::--:::::::::::::::::::::-----:::::::---==++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====---::::::::--==+++**********+++====+++++*****************************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********
+++++++++++*************************+++*+++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************++++++++++++**********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*#%%######################***#####*++++++++++++++++++++++++++++++++++++==+====------------------------------------------------------------------=====+==-------------------====+++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================================================-----====================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========++==+**************************########################################*=-----------------------------------:-------::::::::::::::::::::::::::::::::::----------------------------------------------------------===++++++++=====--------------------------------------------------------------------------------==++++*++++++===------====++++++++***************************************++++==------------------------------------===----===+++*********************************###################+===+++*#######*=--------------------=*##########################*****####*+***+****++++*###################################################################################################################################################***********************************************************************************#################################################**********************************************************************************************#################################################################************++++++++++++===----:::::::::::::::::::::::::::::::::::::--:::::::::::::::::::::-----:::::::---==++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====----::::::::---=+++**********++=======+++++****************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********
+++++++++++***********************++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************++++++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%#######################***#####*++++++++++++++++++++++++++++++++++========------------------------------------------------------------------=====++=----------------------====+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================++===+++++++===========================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============+=-::+***********************############################################+--------------------------------------------:::::::::::::::::::::::::::::::::----------------------------------------------------------===++++++++======-------------------------------------------------------------------------------==++++****+++===----====++++++++******************************************+++==-----------------------------------===========++**********************************###################+==++++*########=---------------------=*##########################***+*####*++*+*****+++*###################################################################################################################################################***********************************************************************************##############################################*************************************************************************************************#################################################################************++++++++++++===----::::::::::::::::::::::::::::::::::::---:::::::::::::::::::::------::::::---==++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===----::::::::---==++*********+++=========++++**************************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********
++++++++++*************************++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************+++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%#########################***######+++++++++++++++++++++++++++++++++=======-------------------------------------------------------------------=====+++=------------------------====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================++=====+++==++++++=====================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============:::::-+*******************################################################=--------------------------------------------::::::::::::::::::::::::::::::::----------------------------------------------------------==+++++++++======-------------------------------------------------------------------------------==++++****++++==----===+++++++********************************************+++===----------------------------------==========+++**********************************###################*++++++*########==--------------------==*#########################******####*++******+++*###################################################################################################################################################***********************************************************************************#############################################**************************************************************************************************#################################################################************++++++++++++===-----:::::::::::::::::::::::::::::::::::---:::::::::::::::::::::------::::::--===++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===----::::::::---==++*********+++===---====++++++********************************************************####*********************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********
++++++++++**************************++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************++++++++++++***********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*#%%%%#########################***######*++++++++++++++++++++++++++++++=======--------------------------------------------------------------------======+++---------------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================++++++++++++++++===++++================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============-:..:::::=*****************##################################################*--------------------------------------------::::::::::::::::::::::::::::::::---------------------------------------------------------===++++++++++=====-------------------------------------------------------------------------------==++++****++++===-====++++++**********************************************+++===---------------------------------==========++++***********************************##################*++++++*########+==-------------------==+*#########################*****#####*+******+++*###################################################################################################################################################***********************************************************************************#########################################******************************************************************************************************#################################################################************++++++++++++===-----:::::::::::::::::::::::::::::::::::---:::::::::::::::::::::------::::::--==+++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=-----::::::::---==++**********++==------====+++++******************************************************######*******************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********
+++++++++***************************++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************++++++++++++*****************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%#%#%#%######################***######*+++++++++++++++++++++++++++=========--------------------------------------------------------------------======+++=---------------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================++==+++++++++++++++===++===========================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============-:.....::::::+***************####################################################=:-------------------------------------------:::::::::::::::::::::::::::::::---------------------------------------------------------===++++++++++======------------------------------------------------------------------------------==++++****++++========+++++***********************************************++++===-------------------------------=====+++++++++************************************##################*++++++*########+==-------------------===*#########################****+*#####*+*++**++*+###################################################################################################################################################***********************************************************************************######################################*********************************************************************************************************#################################################################************++++++++++++===-----:::::::::::::::::::::::::::::::::::----::::::::::::::::::::------::::::--==+++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::---==++*********+++==--------====++++***************************************************##########**********************####************************************************************************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********
++++++++**************************+++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************+++++++++++++**************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%#%%##%########################*#*#####*++++++++++++++++++++++++++=========---------------------------------------------------------------------=====++++=--------------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================+++++++++++++++++++++++++++++=======================------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============-:.......::::::-************#######################################################*--------------------------------------------:::::::::::::::::::::::::::::::---------------------------------------------------------===+++++++++++=====------------------------------------------------------------------------------==++++****++++=======+++++************************************************++++====-----------------------------====++++++++++*************************************##################**+***+#########+====-----------------===+##########################******#####***+**++*+###################################################################################################################################################***********************************************************************************####################################************************************************************************************************************################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::-----::::::::::::::::::::------::::::--==+++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---=+++********+++==--------===+++****************************************************###############**##***********########*******************************************************************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********
++++++++************************+++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++******************************************************+***********************************************************************************************+++++++++++++***********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%#%##%#########################*#######*+++++++++++++++++++++++++=========---------------------------------------------------------------------=====++++=--------------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================+++++++++++++++++++++++++++====================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------=============-:..........::::::-**********#########################################################+-------------------------------------------:::::::::::::::::::::::::::::::---------------------------------------------------------===++++++++++++====------------------------------------------------------------------------------==++++****++++======+++++**************************************************++++===----------------------------====++++++++++**************************************##################*******#########*+===-----------------==+**#########################*******#####**+**++++*##################################################################################################################################################***********************************************************************************##############################***#**************************************************************************************************************################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::-----::::::::::::::::::::------::::::--==+++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++********+++=====++++++*****##########****************************************######################*****##*##########***********************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********
++++++++++**********************++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++******************************************************************************************************************************************************************************+++++++++++++**************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%#########################*#######*+++++++++++++++++++++++==========---------------------------------------------------------------------======++++---------------------------+++++++-=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================================================================++++++++++++++++++++++++++++++++++++=============-----------------------------------------------------------------------------------------------------------------------------------------------------------------==-==-============:...............::::=*****#*#*#########################################################*-------------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===++++++++++++++====-----------------------------------------------------------------------------==++++****++++======++++****************************************************++++===-------------------------====+++++++++*****************************************##################*******#########*++====---------------==+***#########################*******#####*++***++*##################################################################################################################################################************************************************************************************###########################********************************************************************************************************#####*****##################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::-----::::::::::::::::::::-------:::::--==+++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------:::::::::---==++********++++++++*****##################**************************************##########################################***********************************************##**###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******
++++++++*************************+++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++******************************************************************************************************************************************************************************++++++++++++++***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%#########%%###############*#######*++++++++++++++++++++++==========---------------------------------------------------------------------======++++---------------------------++++++=--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================++++++++++++++++++++++++++++++++++++++=========----------------------------------------------------------------------------------------------------------------------------------------------------------------==================-....................::+****##############################################################+:----:------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===+++++++++++++++===-----------------------------------------------------------------------------==++++****+++++====+++++****************************************************++++===------------------------====+++++++********************************************###################*******########*+++===---------------==+****########################********#####**+**++*##################################################################################################################################################************************************************************************************########################********************************************************************************************************##########***##################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::----:::::::::::::::::::::-------:::::--==++++=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++********++++******####%%%%%%%%###########***********************************############################################********************************************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******
+++++++***************************++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++*****************************************************************************************************************************************************************************++++++++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%#########%%################*########+++++++++++++++++++++==========----------------------------------------------------------------------=====++++---------------------------+++++==---=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================++++++++++++++++++++++++++++++++++++++++++++=====------------------------------------------------------===--------------------------------------------------------------------------------------------------==================-.......................:-*####*###################################################*#########--:---------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===+++++++++++++++====----------------------------------------------------------------------------==++++****+++++===+++++******************************************************++++===----------------------====++++++**********************************************###################*******########*++++===--------------==**#***#######################********######*++*++*##################################################################################################################################################**************************************************************************************##################*******************************************************************************************************####################################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::----:::::::::::::::::::::-------:::::--==++++=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++*************######%%%%%%%%%%%%%%%%%%%%%##**********************************############################################****************************************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******
++++++****************************++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++*+++*****************************************************************************************************************************************************************************++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%#%%%%%%%%%########%%#################*########*++++++++++++++++++++=========----------------------------------------------------------------------======+++=--------------------------=++++=----=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================================================================++++++++++++++++++++++++==++++++==+++++++++++=======----------------------------==========================---------------------------------------------------------------------------------------------====================:........................::=*####*#################################################**#########+:--:-:-----------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===++++++++++++++++===----------------------------------------------------------------------------==++++*****+++++=+++++*******************************************************++++===---------------------====+++++************************************************###################*******########*+++++====------------==+****+*#######################********######**+*+*##################################################################################################################################################***************************************************************************************#############*******************************************************************************************************########################################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::----:::::::::::::::::::::-------:::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++**********########%%%%%%%%%%%%%%%%%%%%%%%%##*******************************##############################################******************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******
++++++*****************************++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++*+++****************************************************************************************************************************************************************************++++++++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%#######%%%##########################*+++++++++++++++++++=========----------------------------------------------------------------------======+++=--------------------------=+++=------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================================================--------------------===============================------------------------------------------------------------------------------------------====================-...........................::*#*####################################################***#########---:-------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===+++++++++++++++++===---------------------------------------------------------------------------==++++*****+++++++++++********************************************************++++===-------------------====+++++*************************************************###################*******########***++++====-----------==+**+****######################*******+*#####**+++*###################################################################################################################################################***************************************************************************************########********************************************************************************************************###########################################################################################************+++++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::------:::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++********########%%%%%@@@@@@@@@%%%%%%%%%%%%%##*******************************##############################################*************************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******
++++*******************************++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++**++***********************************************************************************************************************************************************************+++++++++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%#%%%%%%%%%%%%######%%%###########################*++++++++++++++++++========-----------------------------------------------------------------------======+++==-------------------------=++=-------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================================================================================================================================-------=========================================--------------------------------------------------------------------------------------====================-:.........................:.:::=*###################################################***+*#########+:-:-------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===+++++++++++++++++====-------------------------------------------------------------------------===++++*****+++++++++++*********************************************************+++===------------------====+++++*************************************************####################*******########***+++++====----------==+*++*****######################********######*+++*###################################################################################################################################################*****************************************************************************************************************************************************************************************************#############################################################################################************+++++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::-------::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==+++*****########%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%##********************************#############################################*********************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
***********************************++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++***********************************************************************************************************************************************************************+++++++++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%#%%%%%%%%%%%%######%%%%###################*########*++++++++++++++++========-----------------------------------------------------------------------======++++=-------------------------=++=--------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================================================================================================================---------------------------------------------------------------------------------=====================:..........................:::::::+################################################*##***+*##########--:-:-----------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===++++++++++++++++++====------------------------------------------------------------------------===++++*****+++++++++++*********************************************************++++===-----------------===++++***************************************************####################****############***+++++====---------===++*******#####################*******+*######**++###################################################################################################################################################***************************************************************************************************************************************************************************************************###############################################################################################************+++++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::-------::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::----=+++****####%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%##*********************************############################################******************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
***********************************++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++***+++++++++++++++++++***************************************************************************************************************************************************************+++++++++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%##%%#%%%%%############################*+++++++++++++++========-----------------------------------------------------------------------======++++=-------------------------=++---------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================================================================================================================--------------------------------------------------------------------------------====================-...........................::::::::-*#############################################*#******++*#########+:--------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===+++++++++++++++++++===------------------------------------------------------------------------===++++*****++++++++++***********************************************************+++====---------------===++++****************************************************####################****############****+++++=====-------===+++*******#####################*******+*######*++###################################################################################################################################################**************************************************************************************************************************************************************************************************################################################################################################************+++++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::-------::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::----=+++****##%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%#*********************************############################################****************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
**************************************++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++*********************************************************************************************************************************************************+++++++++++++++++++*************************************************************************************+++++++++++++++++++++++++=++=======++++++++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*+++++++++++++========-----------------------------------------------------------------------=======++++=-------------------------+=----------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================================================================================================================================================================================----------------------------------------------------------------------------=====================-:..........................::::::::---=##########################################***********++*##########--:------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===+++++++++++++++++++====-----------------------------------------------------------------------===++++*****++++++++++***********************************************************++++====-------------====+++*****************************************************####################****############*****++++++====------===+++********####################*********#######++###################################################################################################################################################*************************************************************************************************************************************************************************************************################################################################################################**************++++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::-------::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::---==++***##%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%#*************************************###########################################*****#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
**************************************++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++*********************************************************************************************************************************************************+++++++++++++++++++*************************************************************************************+++++++++++++++++++++++======================+++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*+++++++++++++=======-----------------------------------------------------------------------=======++++=-------------------------==-----------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================================================-------------------------------------------------------------------------======================:..........................:::::::::-----*#######################################*************++*##########=--------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===++++++++++++++++++++===----------------------------------------------------------------------====++++*****++++++++++************************************************************++++=====-----------===+++******************************************************####################****############******++++++====-----===+++*********####################*********######*+###################################################################################################################################################************************************************************************************************************************************************************************************************#################################################################################################**************++++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::-------::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::---==++***#%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%#*************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
**************************************+++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************++++++++++++++++++++***********************************************************************************+++++++++++++++++++++=================================+++++++++++++*************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################*+++++++++++=======-----------------------------------------------------------------------=======+++++=------------------------==------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================================================----------------------------------------------------------------------===+==================-...........................:::::::::------=*################################*******************++*##########+--------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===+++++++++++++++++++++==--------------------------------------=--------------------------========+++++*****+++++++++*************************************************************+++++======--------===++++******************************************************####################****############********+++++====----===+++*********####################*+******+*######*###################################################################################################################################################**********************************************************************************************************************************************************************************************###################################################################################################**************++++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::--------:::--=+++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::---==++**##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##**************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
**************************************++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************++++++++++++++++++++***********************************************************************************+++++++++++++++++=======================================++++++++++***************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*++++++++++========----------------------------------------------------------------------========+++++=-----------------------==------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================================================-------------------------------------------------------------------====+==================-............................::::::::---------+############################************************++*#########*-:------------------------------------::::::::::::::::::::::::::::::::-------------------------------------------------------===+++++++++++++++++++++===-------------------------------------===---------------------===========+++++******++++++++**************************************************************+++++=======------===++++******************************************************#####################***############*********+++++====---===+++**********####################+***#****##########################################################################################################################################################*********************************************************************************************************************************************************************************************####################################################################################################***************+++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::--------:::--=+++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::---==++**#%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#*****************************************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
**************************************+++++++++++++++++++++++++++++++++*+*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************+++++++++++++++++++++**********************************************************************************+++++++++++++++===========================================+++++++++****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*++++++++========----------------------------------------------------------------------========+++++=-----------------------==-------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================================================---------------------------------------------------------------=====+==================-:............................:::::::-----------=*#########################**************************++*##########=:------------------------------------::::::::::::::::::::::::::::::::-------------------------------------------------------===+++++++++++++++++++++===-------------------------------------===-------------------============+++++*******++++++++***************************************************************++++++======----===++++*******************************************************#####################***############**********+++++====--===+++***********###################********+*#########################################################################################################################################################*****************************************************************************************************************************************************************************************########################################################################################################***************++++++++++++==----::::::::::::::::::::::::::::::::-------:::::::::::::::::::::---------:--==+++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::---==++**#%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#******************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
**************************************+++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+****************************************************************************************************************************************************++++++++++++++++++++++*********************************************************************************+++++++++++++=============================================++++++++******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++#%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*++++++++=======-----------------------------------------------------------------------=======++++++=--------------------------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================================================-------------------------------------------===--------------=====++=================-:.............................:::::::------------=+*######################****************************+++##########+:------------------------------------::::::::::::::::::::::::::::::::-------------------------------------------------------===+++++++++++++++++++++===-------------------------------------====----------------=======+++++++++++*********++++++*****************************************************************++++++++==========++++*******************************************************#####################***############************++++====-===+++***********###################*+***#****#########################################################################################################################################################**************************************************************************************************************************************************************************************###########################################################################################################****************+++++++++++==----::::::::::::::::::::::::::::::::-------:::::::::::::::::::::------------==+++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::---==++**#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*********************************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
***************************************+++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+****************************************************************************************************************************************************+++++++++++++++++++++++*******************************************************************************++++++++++++===============================================++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+***#%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%################################%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*+++++++======-----------------------------------------------------------------------=======++++++=--------------------------------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================================================----------------------------------------========---------======++==================:..............................:::::::-------------++*##################********************************+++*#########*-:-----------------------------------:::::::::::::::::::::::::::::::::------------------------------------------------------===+++++++++++++++++++++===-------------------------------------====--------------======++++++++++++************+++++*******************************************************************++++++++========+++********************************************************#####################***############*************++++=======+++************###################****#*****#########################################################################################################################################################********************************************************************************************************************************************************************############################################################################################################################*****************++++++++++==----::::::::::::::::::::::::::::::::-------::::::::::::::::::::::-----------==+++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::---==++*#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#*#*******************************************##############################################################################################################################*********######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
***************************************+++++++++++++++++++++++++++++++++*+**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+***************************************************************************************************************************************************+++++++++++++++++++++++++******************************************************************************+++++++++++================================================++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%###############################%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*++++++======-----------------------------------------------------------------------========++++++---------------------------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================================================-------------------------------------========================++================-:...............................:::::::--------------=++*##############************************************++*##########-:-----------------------------------:::::::::::::::::::::::::::::::::------------------------------------------------------===++++++++++++++++++++++==-------------------------------------=====------------=====+++++++++++++****************+***********************************************************************++++++======++++********************************************************#####################***############*************+++++======+++************###################*****#***+*########################################################################################################################################################********************************************************************************************************************************************************************############################################################################################################################*******************++++++++==----::::::::::::::::::::::::::::::::-------::::::::::::::::::::::-----------==+++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::---==++*#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*#*#******************************************###################################################################################################################*****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****
**************************************++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++************************************************************************************************************************************************************++++++++++++++++++++++++++*****************************************************************************+++++++++++================================================+++++++*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################*+++++++====-----------------------------------------------------------------------========++++++=---------------------------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================================================----------------------------------=======================++================-:................................:::::::----------------+++###########***************************************+++##########=:---:--:----------------------------:::::::::::::::::::::::::::::::::------------------------------------------------------===++++++++++++++++++++++===-----------------------------------=======----------====+++++++++*************************************************************************************************+++++===++++********************************************************######################***############**************++++======+++*************##################*****#*****########################################################################################################################################################*******************************************************************************************************************************************************************#############################################################################################################################********************+++++++==----::::::::::::::::::::::::::::::::-------::::::::::::::::::::::-----------==+++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++*#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*#***######***********************************########################################################################################################*****************************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****
**************************************++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++************************************************************************************************************************************************************+++++++++++++++++++++++++++***************************************************************************++++++++++++================================================+++++++*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################++++++++===-----------------------------------------------------------------------========++++++=----------------------=----------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================================================----------------------------------======================+=================-:..................................::::::-----------------=*+*#########****************************************+++*#########+-------:----------------------------:::::::::::::::::::::::::::::::::------------------------------------------------------===++++++++++++++++++++++===-----------------------------------=======---------====++++++******************************************************************************************************+++++++++++********************************************************######################***############***************++++=====+++**************##################***********#######################################################################################################################################################*******************************************************************************************************************************************************************#############################################################################################################################*********************++++++==----::::::::::::::::::::::::::::::::-------::::::::::::::::::::::-----------==+++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++*#%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*#**#######************************************#####################################################################################################*******************************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****
***************************************++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************++++++++++++=++++++++++++++++*************************************************************************+++++++++++++=======================+==++++==================++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################*++++++++==------------------------------------------------------------------------=======++++++=----------------------=-----------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================================================---------------------------------====================+++=================-:...................................:::::::------------------+++*#######*****************************************+++*##########-:---:------------------------------:::::::::::::::::::::::::::::::::------------------------------------------------------==+++++++++++++++++++++++===----------------------------------=========-------====++++**********************************************************************************************************+++++++++*********************************************************######################***############****************++++===++++**************##################*+*********#######################################################################################################################################################*******************************************************************************************************************************************************************#############################################################################################################################***********************++++==----::::::::::::::::::::::::::::::::-------::::::::::::::::::::::-----------==+++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##*############*********************************###################################################################################################*********************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****
***************************************++++++++*++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************+++++++++++======+++++++++++++++*********************************************************************+++++++++++++++=========++++++++++++++++++++++===============+++++++*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*+++++++++==-----------------------------------------------------------------------========++++++----------------------==----------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================================================--------------------------------==================++++=================-:....................................:::::::-------------------+++**####*#******************************************++*##########=:-:-:--:---------------------------:::::::::::::::::::::::::::::::::------------------------------------------------------==+++++++++++++++++++++++===---------------------------------===========----====+++++*************************************************************************************************************++++++**********************************************************######################***############****************+++++==++++***************##################+********+*######################################################################################################################################################********************************************************************************************************************##########*************************************#############################################################################################################################***********************++++===----:::::::::::::::::::::::::::::::-------::::::::::::::::::::::-----------==+++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++*%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*#################****************************################################################################################################************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****
***************************************+++++++******************++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************+++++++++++=========++++++++++++++++++***************************************************************++++++++++++++++++++++++++++++++++++++++++++++++==============+++++++*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#####################################*++++++++++==---------------------------------------------------------------------========++++++=---------------------==-----------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================================================================================================================================================================================-----------------------------=====================+++=================-.......................................::::::--------------------=+++*######******************************************+++*#########+:------:---------------------------:::::::::::::::::::::::::::::::::-----------------------------------------------------===+++++++++++++++++++++++===-------------------------------=============--=====++++*****************************************************************************************************************+++***********************************************************######################***############****************+++++++++++***************##################*********+*######################################################################################################################################################***************************************************************************************************************################************************************#############################################################################################################################************************++++==----:::::::::::::::::::::::::::::::-------::::::::::::::::::::::-----------==+++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::---==++#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*#####################************************############################################################################################*****************************************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****
****************************************++++++********************+++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************+++++++++++===========+++++++++++++++++++++++++++++++*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++******************************************************************++++++++++++++++++++++++++++================++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%####################################*++++++++++++===------------------------------------------------------------------========++++++=---------------------=+=-----------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================================================================================================================----------------------------=========================================.  .....................................::::::----------------------+*+****##*******************************************+++*##########-:---------------------------------:::::::::::::::::::::::::::::::::-----------------------------------------------------===+++++++++++++++++++++++===----------------------------=========+++==========++++********************************************************************************************************************************************************************************######################***############*****************++++++++++****************#################*+********+*#####################################################################################################################################################*************************************************************************************************************##################************************************#############################################################################################################################************************++++==----::::::::::::::::::::::::::::::--------:::::::::::::::::::::::----------==++++++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::---==++#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################********************#####################################################################################*************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****
****************************************+++++************************++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************++++++++++++===============+++++++++++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++******************************************************************+++++++++++++++++++++++++=====================++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%#####################################*++++****++++===-----------------------------------------------------------------=======+++++++=---------------------+=-----------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================================================================================================================--------------------------=======================================++*+..................:-:...................::::::----------------------=*+**************************************************++*##########=:---------------------------------:::::::::::::::::::::::::::::::::-----------------------------------------------------===+++++++++++++++++++++++===--------------------------======++++++++++======+++++*********************************************************************************************************************************************************************************######################***############*****************++++++++++****************##################***********#####################################################################################################################################################********************************************************************************************************#######################*************************************############################################################################################################################************************++++==----::::::::::::::::::::::::::::::--------:::::::::::::::::::::::----------==++++++=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::---==++#%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*###########################*****************################################################################################******************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****
****************************************+++++***************************+**++++************++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++++++++++++=================++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************++++++++++++++++++++++++========================++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#############################%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%#######################################*********++++===---------------------------------------------------------------=======+++++++=---------------------=+------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================================================================================================================-----------------------=======================================+******=.................-*=..................::::::------------------------**+*************************************************+++*#########+------:---------------------------:::::::::::::::::::::::::::::::::-----------------------------------------------------===++++++++++++++++++++++++==-------------------------=====++++++++++++++++++++++**********************************************************************************************************************************************************************************######################***############******************+++++++++*****************#################********+*+#####################################################################################################################################################*****************************************************************************************************##########################*************************************############################################################################################################################************************++++==----::::::::::::::::::::::::::::::--------:::::::::::::::::::::::---=------==++++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::---==++#%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*############################***************##########################################################################*************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****
**********************************************************************+++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++++++++++++====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************+++++++++++++++++++++++==========================++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%#%%%%%############################################****++++++==-------------------------------------------------------------========+++++++=--------------------=+=-----------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================================================================================================================================-------------------==-=====================================+**********-.................=+:.................:::::-------------------------+*+**************************************************++*#########*---:-----------------------------::::::::::::::::::::::::::::::::::-----------------------------------------------------===++++++++++++++++++++++++==------------------------====++++++++++++++++++++++************************************************************************************************************************************************************************************######################***############******************+++++++++*****************#################************####################################################################################################################################################*************************************************************************************************#############################***************************************#####################*#####################################################################################################************************+++===----::::::::::::::::::::::::::::::--------:::::::::::::::::::::::---==-----==++++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::---==++%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**##############################*##*******###########################################################################************************************************************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***
**********************************************************************++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++++++++++++=====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++===========================+++++++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%############################################****++++++===-----------------------------------------------------------========++++++++--------------------=++------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================================================================================================================================------------------======================================+*************+.................:+-.................:::::-------------------------=****************************************************++*##########----:----------------------------::::::::::::::::::::::::::::::::::-----------------------------------------------------===++++++++++++++++++++++++==------------------------===+++++++++++++++++++++**************************************************************************************************************************************************************************************######################***############*******************++++++++******************#################***********####################################################################################################################################################***********************************************************************************************##############################****************************************#####################*#####################################################################################################************************+++===----::::::::::::::::::::::::::::::--------:::::::::::::::::::::::---===----==++++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*####################################***###########################################################################**************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***
***********************************************************************++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************+++++++++++++========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++++++++++++++++++++++==============================+++++++***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%##############################################***++++++++==---------------------------------------------------------========++++++++=-------------------=++=------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================================================================================================================---------============================-==========++**************+:..................-=................::::::--------------------------****************************************************+++*#########+:--:----------------------------::::::::::::::::::::::::::::::::::-----------------------------------------------------===++++++++++++++++++++++++==-----------------------===++++++++****************************************************************************************************************************************************************************************************#######################**############*******************++++++++******************#################**********+*###################################################################################################################################################********************************************************************************************###############################********************************************##############********###################################################################################################************************+++===----::::::::::::::::::::::::::::::--------:::::::::::::::::::::::---===---===++++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%########################################################################################################*###########***************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
************************************************************************++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++++++++++++============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++**********************************************************************++++++++++++++++++++++===============================++++++*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################****++++++++==-------------------------------------------------------========+++++++++=------------------=++=------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================================================--=====================-------========++******************-....................-................::::::--------------------------+****************************************************++*#########*--------------------------------::::::::::::::::::::::::::::::::::-----------------------------------------------------===++++++++++++++++++++++++==-----------------------===++++++******************************************************************************************************************************************************************************************************#######################**#############******************++++++++******************##################*********+*###################################################################################################################################################****************************************************************************************################################**************************************************########**************################################################################################################************************+++===----::::::::::::::::::::::::::::::--------:::::::::::::::::::::::---====--===++++++==--:::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===+#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##*###################################################################################################*****************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
************************************************************************+++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************++++++++++++============================++++++++++++++++=======+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================++++++++++*********************************************************************************+++++++++++++++++++++++==============================+++++++*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################**++++++++++==-----------------------------------------------------========++++++++++------------------=+++=------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++======================================================================================================================================================================================================================================-----------======++***********************=.....................................::::::--------------------------=****************************************************+++##########-:-----------------------------::::::::::::::::::::::::::::::::::::----------------------------------------------------===++++++++++++++++++++++++==----------------------===+++++********************************************************************************************************************************************************************************************************#######################**#############******************++++++++*******************#################*+********+*##################################################################################################################################################**************************************************************************************##########################********************************************************************************###############################################################################################*************************+++==-----:::::::::::::::::::::::::::::----------::::::::::::::::::::::---=========++++++==--::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==+#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#**#############################################################################################**###******************************************************************************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
***************************************************************************+++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************++++++++++++=========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++=============================+++++++++********************************************************************************+++++++++++++++++++++++===============================++++++*******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################**#####***++++++++++===--------------------------------------------------========++++++++++=------------------+++=------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======+++++++++++++++================================================================================================================================================================================================================================---------========++*****************************:....................................:::::---------------------------=****************************************************+++*#########=:-:---------------------------::::::::::::::::::::::::::::::::::::----------------------------------------------------===++++++++++++++++++++++++==----------------------==+++++*****************************************************+***************************************************************************************************************************************************#######################*##############*******************+++++++*******************#################************##################################################################################################################################################**************************************************************************##################################**************************************************************************************#############################################################################################*************************+++==-----:::::::::::::::::::::::::::::----------::::::::::::::::::::::---=========++++++==--::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==+#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#**####################################################################################################****************************************************************************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************+++++++++++=========================================================+++++++++++======================================================================+++++++++++*****************************************************************************+++++++++++++++++++++++===============================++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################***+++++++++++==-------------------------------------------------========+++++++++++=-----------------++++-------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===+++++++++++++++++============================================================================================================================================================================================================================================++********************************#=....................................:::::----------------------------*****************************************************++*#########*--:--------------------------:::::::::::::::::::::::::::::::::::::----------------------------------------------------===++++++++++++++++++++++++===--------------------===++++*****************************************************++***************************************************************************************************************************************************#######################*##############*******************+++++++********************#################***********##################################################################################################################################################******************************************************************######################################******************************************************************************************#############################################################################################*************************+++==-----:::::::::::::::::::::::::::::----------::::::::::::::::::::::---=========++++++==--:::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=+#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##*#####################################################################################################***************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*
****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************+++++++++++=======================++==================================================================================================================+++++++++++++++++**********************************************************************++++++++++++++++++++++++===============================+++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################***++++++++++++==-----------------------------------------------========++++++++++++-----------------++++=-------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++=========================================================================================================================================================================================================================================+++***********************************#:...................................:::::----------------------------+****************************************************+++*#########---:-------------------------:::::::::::::::::::::::::::::::::::::----------------------------------------------------===++++++++++++++++++++++++===-------------------===++++******************************************************++***************************************************************************************************************************************************#######################*##############*******************++++++*********************#################***********##################################################################################################################################################*****************************************************************####################################*********************************************************************************************#############################################################################################*************************+++==-----:::::::::::::::::::::::::::::-----------:::::::::::::::::::::---========+++++++==--:::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=+#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##*####################################################################################################****************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*
****************************************************************************************+++++++++++++++*+++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************++++++++++=============================================================================================================================================++++++++++++++++++********************************************************************++++++++++++++++++++++++++=============================+++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################****++++++++++++==---------------------------------------------========+++++++++++++----------------=+++=-------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================++++==============================================================================================================================================================================================================++++**************************************+...................................:::::---------------------------:+****+***********************************************+++*#########+:--:------------------------:::::::::::::::::::::::::::::::::::::----------------------------------------------------==+++++++++++++++++++++++++===------------------====+++*******************************************************++***************************************************************************************************************************************************#######################*##############********************+++++**********************#################**********##################################################################################################################################################****************************************************************##################################************************************************************************************************#############################################################################################*************************+++===----:::::::::::::::::::::::::::::------------::::::::::::::::::::---========+++++++==--:::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################****************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
*********************************************************************************************+++*++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************++++++++++==============================================================================================================================================++++++++++++++++++++*****************************************************************++++++++++++++++++++++++++=============================+++++*****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################****+++++++++++++==-------------------------------------------========+++++++++++++=---------------=++++=-------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================================================================================================================================++++*****************************************#-..................................:::::---------------------------:=****++***********************************************++**########*--:-------------------------:::::::::::::::::::::::::::::::::::::----------------------------------------------------==++++++++++++++++++++++++++==-----------------====++++*******************************************************++***************************************************************************************************************************************************#######################*##############********************+++++**********************#################**********##################################################################################################################################################******************************************************************################################************************************************************************************************#############################################################################################*************************+++===----:::::::::::::::::::::::::::::-----==--------:::::::::::::::::---========+++++++==--:::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################****************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
***************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++++++++++===============================================================================================================================================++++++++++++++++++++*****************************************************************++++++++++++++++++++++++++++==========================+++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################******+++++++++++++==------------------------------------------========+++++++++==++=--------------=++++=-------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================================================================================================================================================================================++++*********************************************..................................:::::-----------------------------****++***********************************************+++*#########--:------------::::---------:::::::::::::::::::::::::::::::::::::---------------------------------------------------===++++++++++++++++++++++++++==----------------====++++********************************************************++***************************************************************************************************************************************************#######################*###############*******************+++++**********************#################**********##################################################################################################################################################*******************************************************************#######################********************************************************************************************************#############################################################################################*************************+++===----::::::::::::::::::::::::::::-----====---------:::::::::::::::---========+++++++==--:::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**####################################################################################################****************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++++++++++=================================================================================================================================================++++++++++++++++++*****************************************************************+++++++++++++++++++++++++++++++=======================++++++*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################*******+++++++++++++==-----------------------------------------========+++++++====+=--------------=+++++--------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================================================================================================================================================================+++***********************************************#=.................................:::::-----------------------------+****+***********************************************+++***#######=:------------:::::::------::::::::::::::::::::::::::::::::::::::---------------------------------------------------===++++++++++++++++++++++++++==---------------====++++*********************************************************++**************************************************************************************************************************************************########################################********************++++***********************#################*********##################################################################################################################################################*********************************************************************#################************************************************************************************************************#############################################################################################*************************+++===----:::::::::::::::::::::::::::------======----------::::::::::::---=======+++++*++==--::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**#########################################################################################################************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
********************************************************************************************************++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************##############***********************++++++++++==========================++++++++++++++++++++++++++==================+=====================================================================================++++++++++***************************************************************+++++++++++++++++++++++++++++++++++===================++++++*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################*********+++++++++++++==------------------------------------------=======+++===--==+=-------------=+++++=-------------------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================================+++*************************************************#**:................................:::::-----------------------------+****++***********************************************+++***######*--:---------::::::::::--::::::::::::::::::::::::::::::::::::::::---------------------------------------------------===++++++++++++++++++++++++++==---------------===++++**********************************************************++**************************************************************************************************************************************************########################################*********************+++***********************#################*********##################################################################################################################################################***********************************************************************##############*************************************************************************************************************#############################################################################################*************************+++===----:::::::::::::::::::::------------=========---------::::::::::---=======+++++*++==--::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*###############*****########################################################################################*************************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
********************************************************************************************************++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************##########################***********+++++++++++=========================+++++++++++++++++++++++++++++========++++++++++=====================================================================================+++++++++***********+++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++================++++++**********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################*********+++++++++++++++==---------------------------------------------======----==+=------------=+++++=--------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================================================================================================================================================================++*******************************************************=................................:::::-----------------------------=*****=***********************************************+=+*****#####-------------:::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------===+++++++++++++++++++++++++++===-----:-------====++++**********************************************************+***************************************************************************************************************************************************#######################################**********************++************************##################********##################################################################################################################################################************************************************************************###########***************************************************************************************************************#############################################################################################*************************+++===----:::::::::::::::::::-------------==============------::::::::----======++++++*++==--::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############*********#######################################################################################************************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
*****************************************************************************************************************++++++++++++++++++++++++++++*****************************************************************************************************************************************************############################********+++++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++===++================================================================================+++++++++********+++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################********++++++++++++++++==------------------------------------------------------=++------------=++++++=--------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================================================================================================+++**********************************************************................................:::::-----------------------------=*****=+***********************************************+++*****####=:------------::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------===++++++++++++++++++++++++++++==-------------===++++**********************************************************++***************************************************************************************************************************************************#######################*###############*************************************************#################********##################################################################################################################################################**************************************************************************######*****************************************************************************************************************##############################################################################################*************************++++==----::::::::::::::::----------------====+++++======-------::::::----====+++++++**++==--::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*###########**********######################################################################################************************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
+*****************************************************************************************************************+++++++++++++++++++++++++++****************************************************************************************************************************************************#############################********+++++++++===========================++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================++++++++++***++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################**********+++++++++++++++++==----------------------------------------------------=+=------------++++++=--------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================================================================================================================+++************************************************************+................................:::::------------------------------*****+=********************************************+**+++*****####+-------------::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------===+++++++++++++++++++++++*++++==-------------===++++**********************************************************++***************************************************************************************************************************************************#######################*###############*************************************************##################*******##################################################################################################################################################***************************************************************************####******************************************************************************************************************##############################################################################################**************************+++==----::::::::::::::::----------------====+++++++++===-------::::-----====+++++++**++==--::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*###########***********#####################################################################################************************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
+++*******************************************************************************************************************++++++++++*+++++++++++*****************************************************************************************************************************************************#############################*******+++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################***********++++++++++++++++++==--------------------------------------------------=+=-----------+++++++---------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================================================================================================================================================+++**************************************************************+.................................:::::------------------------------******-+*********************************************++=+******####-:--::-:---::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------===++++++++++++++++++++++**++++==-----::-----===++++***********************************************************++***************************************************************************************************************************************************#######################################*************************************************##################*+*****##################################################################################################################################################************************************************************************************************************************************************************************************************################################################################################################*************************+++==-----:::::::::::::------------------====++++++++++===---------------====++++++***+++=---::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*############************############################################################################################*****************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
++++*******************************************************************************************************************+++++++++++++++++++++******************************************************************************************************************************************************###########################*******++++++++===========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************++++++++++++++++++++++++++++++***++**********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################************++++++++++++++++++==-------------------------------------------------=+-----------=++++++=--------------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================++++****************************************************************-.................................:::::------------------------------+*****==********************************************++++++******###=:----:---::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------===++++++++++++++++++++++***+++==-----::----===+++++***********************************************************++***************************************************************************************************************************************************#######################################**************************************************#################*******##################################################################################################################################################************************************************************************************************************************************************************************************************################################################################################################*************************+++==------:::::::::----------------------====+++++++++===---------------===+++++++***+++=---::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############************##########################################################################################******************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
+++++********************************************************************************************************************++++++++++++++++++********************************************************************************************************************************************************#########################*******++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================+++++++++++++++++===============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************+++++++++*******************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################************+++++++++++++++++++==-----------------------------------------------==----------==+++++=---------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================---==========================================================================================++++*******************************************************************:.................................::::::----------------------------:+*****+-+******************************************+++++=+*******##*--:--:-:-::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------===++++++++++++++++++++++****+++==----::----===+++++**********************************************************+++***************************************************************************************************************************************************######################################***************************************************##################******##################################################################################################################################################************************************************************************************************************************************************************************************************################################################################################################**************************++===-----::::::::------------------------======+++++====---------------===+++++++***+++=---::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############*************#########################################################################################*****************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
++++++********************************************************************************************************************++++++++++++++**************************************************************************************************************************************************************####################********++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================+++++++++========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################************++++++++++++++++++++==---------------------------------------------==---------==+++++=----------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================------------===================================================================================++++**********************************************************************=.................................::::::-----------------------------=*****+-=**************************************++++++++++=+*******##-----:-::---:::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------===+++++++++++++++++++++++****++==---:::----===++++++**************++++++++***********************************++***************************************************************************************************************************************************#######################################***************************************************##################*******#################################################################################################################################################************************************************************************************************************************************************************************************************################################################################################################**************************+++==------::::----------------------------==============----------------==++++++****+++=---::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*#############**************############################################################################################*************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
+++++++********************************************************************************************************************+++**++++++**********************************************************************************************************************************************************************#############*******++++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################*************+++++++++++++++++++++==------------------------------------------==---------====++++=----------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================================-------------------===============================================================================++++************************************************************************#*:.................................:::::-----------------------------=******--+***********************************++++++++++++=+********#+:-:---------------::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------====+++++++++++++++++++++++*****++=---:::---===+++++++++++++++++++++++++++++++++******************************+++***************************************************************************************************************************************************#######################################****************************************************##################******#################################################################################################################################################************************************************************************************************************************************************************************************************################################################################################################***************************++===--------------------------------------=============----------------==+++++*****+++=---::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*############*************#############################################################################################************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
++++++++*************************************************************************************************************************+++******************************************************************************************************************************************************************************************++++++++++===========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%****#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%###%%##############%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################*##**********++++++++++++++++++++++==----------------------------------------==--------=======+=----------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================-----------------------=========================================================================++++******************************************************************************=.................................::::::-----------------------------******=:=*******************************++++++++++++++++==+*******#*--:--:--------------:::::::::::::::::::::::::::::::::::::::::-------------------------------------------------====+++++++++++++++++++++++*****++==--:::---===++++++++++++++++++++++++++++++++++++++*************************+++***************************************************************************************************************************************************#######################################****************************************************##################*++**##################################################################################################################################################************************************************************************************************************************************************************************************************#################################################################################################***************************++===----------------------------------------==========----------------==+++++*****+++=---::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*############*************##############################################################################################************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++=============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++*+++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%######%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################*************++++++++++++++++++++++===-------------------------------------=--------==========----------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================================-------------------------=====================================================================++++**********************************************************************************-.................................:::::---------------------------:-******+:-+***************************++++++++++++++++++++=+********#=:---:---------------:::::---::::::::::::::::::::::::::::::::--------------------------------------------------===+++++++++++++++++++++++******+==--:::---===++++++++++++++++++++++++++++++++++++++++++*********************+++***************************************************************************************************************************************************#######################################****************************************************###################*+**##################################################################################################################################################************************************************************************************************************************************************************************************************#################################################################################################***************************+++====---------------===========----------------====------------------==++++******+++=---::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############*************##############################################################################################*************************************************************##*#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
+++++++++******************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++==============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================================++++++++++++++++++++==========+++++++++++++++++++++++++++++++********************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%##%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################*##**********++++++++++++++++++++++++==-------------------------------------------==========----------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================================--------------------------=================================================================++++***************************************************************************************:................................::::::--------------------------:-+*****+-:+*************************++++++++++++++++++++++=+*********+---------------------:::-----:::::::::::::::::::::::::::::::--------------------------------------------------===+++++++++++++++++++++++******++=--:::---===++++++++++++++++++++++++++++++++++++++++++++******************++++***************************************************************************************************************************************************#######################################****************************************************###################*+**##################################################################################################################################################************************************************************************************************************************************************************************************************##################################################################################################***************************++++================================----------------------------------==++++******+++=---::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------=#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*#############*************##############################################################################################*****************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++=============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++=========================================================================================================================++++++++++++++++====================+++++++++++++++++++++++++++**************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*++*++++++++*******++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%###############################################################************++++++++++++++++++++++++==-----------------------------------------=========-----------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================----------------------------====-=======================================================+++++******************************************************************************************+................................:::::::--------------------------:+******=:=**********************++++++++++++++++++++++++++=+*********-:------------------------------------------------------------------------------------------------------------===+++++++++++++++++++++++******++=--::::--===++++++++++++++++++++++++++++++++++++++++++++++****************++++**************************************************************************************************************************************************########################################*****************************************************###################+**##################################################################################################################################################***********************************************************************************************************************************************************************************************####################################################################################################****************************++++==================+++++==========------------------------------===++++******+++=---::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###*############***********#################################################################################################**********************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*
**+++++***********************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++======================================================================================================================+++++++++++++========================+++++++++++++++++++++++++++******************************************************************************++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%################################################################**#####******++++++++++++++++++++++++==--------------------------------------=========------------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================-----------------------------====-==================================================++++++***********************************************************************************************-................................::::::--------------------------:+******=:-+*******************++++++++++++++++++++++++++++=++********=:------------------------------------------------------------------------------------------------------------===+++++++++++++++++++++++******++=--::::--====++++++++++++++++++++++++++++++++++++++++++++++***************+++***************************************************************************************************************************************************########################################*****************************************************###################***##################################################################################################################################################***********************************************************************************************************************************************************************************************#####################################################################################################******************######*****+++++++++++++++++++++++++++++=========---------------------------===++++******+++=---::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################***********##################################################################################################*********************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*
****************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++==============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================================================++++++++==================================++++++++++++++++++++++*******************************************************************+****+++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++++++++++++++++++++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%##################################################################*************+++++++++++++++++++++++++==-----------------------------------==========-----------------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================-----------------------------=====================================================+++++****************************************************************************************************:...............................:::::::-------------------------:=******+::=*************+++++++++++++++++++++++++++++++++++=+********+-------------------------------------------------------------------------------------------------------------===++++++++++++++++++++++++*****++=-:::::---=======+++++++++++++++++++++++++++++++++++++++++++*************++++***************************************************************************************************************************************************########################################*****************************************************###################*+**#################################################################################################################################################**********************************************************************************************************************************************************************************************########################################################################################################***************#########******+++++++++++++++++++++++++++++==========-----------------------===++++******++==---::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*##############***********######################################################################################################******************************************************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*
****************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++=================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================================================+++==+=======================================+++++++++++++++++++********************************************************************+++**#%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+++++++++++++++++++++++++++++++++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%####################################################################*************+++++++++++++++++++++++++==--------------------------------==========------------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================------------------------------===================================================+++***++***************************************************************************************************=................................::::::-------------------------:=****+*+::-+*+********+++++++++++++++++++++++++++++++++++++=++********=--------------------------------------------------------------------------------------------------:::::-----===++++++++++++++++===+++++*****+==-::::::--==================================+++++++++++++++++************++++***************************************************************************************************************************************************########################################*****************************************************####################***#################################################################################################################################################**********************************************************************************************************************************************************************************************##########################################################################################################************############***************+++++******++++++++++=========---------------------===++++*****+++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*###############**********########################################################################################################****************************************************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*
***************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++==================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================================++++++++++++++++++++***************************++++++++*******************************#%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***++++++++++++++++++++++++++++++++++++++++++++++++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%########################################################################***********+++++++++++++++++++++++++===----------------------------===========------------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================-------------------------------=================================================+++++**++**************************************************************************************************#**-...............................:::::::----------------------:-:-****+**-::+++***++++++++++++++++++++++++++++++++++++++++++==+********+-------------=====================================================-----------------------------:::::::::----====++++++++++==========++++****+=--::::::--=======================================++++++++++++++*********++++****************************************************************************************************************************************************#######################################*******************************************************###################***#################################################################################################################################################**********************************************************************************************************************************************************************************************#########*************#####################################################################################***********###############**************************+++++++++==========------------------====+++******++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*################*********#########################################################################################################*****************************************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*
***************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================================+++++++++++++++++++++++++*******************++++++++++++++++**********************##%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%######################################################################************#**++++==+++++++++++++++++++++==-------------------------============-----------------------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================------------------------------=================================================++++***********************************************************************************************************+................................:::::::---------------------:::-***+**+=::=+**+++++++++++++++++++++++++++++++++++++++++++++=+*********=------==============================================================---------------------:::::::::::::::----========================+++***++=--::::::---========================================++++++++++++++*******++++****************************************************************************************************************************************************#######################################*******************************************************###################***#################################################################################################################################################*********************************************************************************************************************************************************************************************#########*****************###################################################################################*********####################*************************+++++++++========-----------------====+++******++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################*******############################################################################################################***************************************************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++=======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================================================================================================++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++***************##%%%%%%%%%%%%%@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###****##%%%%%%####%%%%%%%%%%%%%%%%%%###*****************+++++++++++++++++++++++++++++++++++++++++++++++++++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%#########################################################################***************++++++++++++++++++++++++++==----------------------============------------------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================-------------------------------==============================================+++++++************************************************************************************************************=................................:::::::--------------------::::+**+*+++::-++*+++++++++++++++++++++++++++++++++++++++++++++=++********+---=======================================+++++++++++++++=============-----------------:::::::::::::::::----========================++++**++=--:::::::---=========================================+++++++++++++******++++****************************************************************************************************************************************************#######################################*******************************************************####################**#################################################################################################################################################******************************************************************************************************************************************************************************##*************########***************************###########################################################################********#########################***********************++++++++++======---------------====+++******++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###################******###############################################################################################################*************************************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************++++++++++===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================================================================================================++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********##%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***++++++++++*************##%%%####*****************************+**+++++++++++++++++++++++++++++++++++++++++++++++***#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%###########################################################################***************++++++++++++++++++++++++++==-------------------==========+==------------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================--------------------------------============================================+++++**+**************************************************************************************************************:...............................:::::::-------------------:::::+*++*+*+:::+++++++++++++++++++++++++++++++++++++++++++++++++=+*********=-=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++======----------------::::::::::::::::::---=========================+++**++=--::..:::---===========================================++++++++++++****+++++****************************************************************************************************************************************************#######################################*******************************************************####################**#################################################################################################################################################******************************************************************************************************************************************************************************###************#######*******************************########################################################################********#########%%#################************************++++++++=====--------------====+++*****+++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*#################******###############################################################################################################******************************************#******##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************++++++++=====================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**++++++++++++++++++********************************************************+*+++++++++++++++++++++++++++++++++++++++++++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%#############################################################################****************++++++++++++++++++++++++===----------------==========+====-----------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================--------------------------------=====================================++==++++++++******************************************************************************************************************+................................:::::::-------------------::::+*++++++:::-+++*++++++++++++++++++++++++++++++++++++++++++++=++********+======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======------------:::::::::::::::::::::---=========================++++*++=--:....::----============================================+++++++++++**+++++****************************************************************************************************************************************************########################################********************************************************####################*#################################################################################################################################################******************************************************************************************************************************************************************************###************#####********************************##########################################################################*******########%%%%%##################***********************+++++++====--------------====+++*****+++==--::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------*%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************+++++++++====================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++**##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%###############################################################################*****************++++++++++++++++++++++++==---------------===================================--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================-----------------------------=============================+++++++++++++++++++++*********************************************************************************************************************-................................:::::::-----------------:::::+*++++++-:::+++++++++++++++++++++++++++++++++++++++++++++++++=+*********+==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------------:::::::::::::::::::::---=========================+++++++=--:....:::----===========================================++++++++++++++++++****************************************************************************************************************************************************########################################********************************************************####################*#################################################################################################################################################******************************************************************************************************************************************************************************##**************####********************************###########################################################################******#########%%%%####################***********************++++++===---------------===+++*****+++==--::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------*%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################********************************************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************+++++++++====================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***++++++++++++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%#################################################################################*******####*******+++++++++++++++++++++++===-----------========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================----------------------------=-=======================++++++++++++++++++++**************************************************************************************************************************#*:................................:::::::----------------:::::++++++++-..:=++++++++++++++++++++++++++++++++++++++++++++++++=++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----------:::::::::::::::::::::::---========================+++++++=--:....:::-----===========================================+++++++++++++++++****************************************************************************************************************************************************########################################********************************************************######################################################################################################################################################################******************************************************************************************************************************************************************************##**************************************************###########################################################################******#########%%%%%#####################***********************+++++===--------------===++++****+++==--::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################******************************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************++++++++=====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================================================================================================++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****++**+++++++++++++++++++++++++++++++*************************************************************++++++++++++++++++++++++++++++++++++++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%#############################################################################################*********++++++++++++++++++++++=========-=========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================---------------------------=======================+++++++++++++++++++++*******************************************************************************************************************************=.................................::::::::--------------:::::=+++++++=...-+++++++++++++++++++++++++++++++++++++++++++++++++=+*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---------:::::::::::::::::::::::----===============---=====+++++++=--:.....::------===========================================+++++++++++++++*****************************************************************************************************************************************************######################################%*********************************************************######################################################################################################################################################################********************************************************************************************************************************************************************************************************************************##############################################################################******########%%%%%%######################**********************++++===--------------===++++*****++==--::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################****************************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************++++++++====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================+++++++++++++++++++++++++++++++++++**++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****+*********++++++++++++++++++++++++++++++++*************************************************************++++++++++++++++++++++++++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%##################################################################################################**###***+++++++++++++++++++++==============================================+==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================-------------------------=================+++++++++++++++++++++++++************************************************************************************************************************************-................................:::::::::-------------:::::=*+++++++:..:+++++++++++++++++++++++++++++++++++++++++++++++++=+*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---------:::::::::::::::::::::::----========-----------=====++++++==-:.....::------============================================++++++++++++++*****************************************************************************************************************************************************#######################################*********************************************************######################################################################################################################################################################*******************************************************************************************************************************************************************************************************************************###################################################################**##########*****#########%%%%%%%#########################*******************+++===--------------====+++*****++==--::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################*************************************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************++++++++===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================================================================================================================+++++++++++++++++++++++++++++++++++**+++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************+++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%##############################################################################################****######*****+++++++++++++++++++++========================================++++===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================---------------------=========+++++++++++++++++++++++++++++*+***********************************************************************************************************+++*+************************+.................................::::::::::---------:::::::=*+++++++:...=+++++++++++++++++++++++++++++++++++++++++++++++++=+*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--------:::::::::::::::....::::------------------------====++++++==-:.....::-------=============================================+++++++=++++*****************************************************************************************************************************************************#######################################**********************************************************#####################################################################################################################################################################**************************************************************************************************************************************************#***************************************************************************###################################################################*****########*****#########%%%%%%%%##########################*****************+++===--------------====+++*****++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################**********************************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================================================+++++++++++++++++++++++++++++++++++**+++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**************************+++++++++++++++++++++++++++++***************************************************************++++++++++++++++++++++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%#########################################################################################################*****++++++++++++++++++++++==========================+++=======++++++===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================--------------============++++++++++++++++++++++++++***********************************************************************************************************************++************************=................................::::::::::::::---:::::::::=*+++++++:...=+++++++++++++++++++++++++++++++++++++++++++++++++=++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::::::::::........:::------------------------====++++++==-::....::--------=============================================++++++++++******************************************************************************************************************************************************#######################################**********************************************************#####################################################################################################################################################################**************************************************************************************************************************************************####***********************************************************************###################################################################*******########*############%%%%%%%%############################***************+++===---------------===+++*****++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################********************************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************************************************************************++++++++++================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================================================+++++++++++++++++++++++++++++++++++**++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************+++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%###########################################################################################################*****++++++++++++++++++++++++===================++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================--------------==========+++++++++++++++++++++++***************************************************************************************************************+++**********+++**********************#*:................................:::::::::::::::::::::::::-*+++++++-...-++++++++++++++++++++++++++++++++++++++++++++++++++=++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::::::::..........:::------------------------====+++++++=-::....:::-------===============================================+++=+=++******************************************************************************************************************************************************#######################################**********************************************************#####################################################################################################################################################################************************************************************************************************************************************************#######**********************************************************************##################################################################********#####################%%%%%%%%###############################*************++===---------------===+++*****++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################*****************************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++===============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================================================================================+++++++++++++++++++++++++++++++++++++++**++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*************************************++++++++++++++++++++++++++******************************************************************+++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%###########################################################################################################*****+++++++++++++++++++++++++++===============++++++++++++++++++++++==++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================-------===========++++++++++++++++++********************************************************************************************************************++************+++++******+**************#*#+................................:::::::::::::::::::::::::-++++++++=...:+++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::::::............:::-------------------------===+++++++=-::....:::-------===============================================++====++*****************************************************************************************************************************************************########################################**********************************************************#####################################################################################################################################################################***********************************************************************************************************************************************###**######******************************************************************#################################################################**********####################%%%%%%%%%###################################*********+++===--------------===+++*****++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########################################################################################################################################################************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************#####****************************************************************************************************************************************************************************+++++++++++===============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================+++++++===========================================================================+++++++++++++++++++++++++++++++++++++++**++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************++++++++++++++++++++++++++******************************************************************+++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%############################################################################################################******+++++++++++++++++*****+++++==============+++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================---=======++++++++++++++***********************************************************************************************************************+++++++*********+++++++***********************#*-...............................:::::::::::::::::::::::::-++++++++=....=++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------::::::::..............::-------------------------===+++++++=--:....:::-------=====================================================++*****************************************************************************************************************************************************#######################################***********************************************************#####################################################################################################################################################################************************************************************************************************************************************************##########*************************************************************##################################################################**************###################%%%%%%%%%%######################################*******+++====------------===+++*****++==---:::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################***********************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++***************************************************************************************************************############******************************************##**************************************************************************************************************************+++++++++++==============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================++++++++++++++++++++++++===========================================================+++++++++++++++++++++++++++++++++++++++**+++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************++++++++++++++++++++++++++*******************************************************************++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%##############################################################################################################******+++++++++*****++++*****+++==============+++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++===================================================================+++++++++++************************************************************************************************************++************+++++++++++****++++++++++************************#*:..............................:::::::::::::::::::::::::-+++++++++....=+++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------:::::::...............::------------------------====+++**++==-::...:::-------====================================================+++*****************************************************************************************************************************************************#######################################***********************************************************#####################################################################################################################################################################**************************************************************************************##*********************************************************#########************************************************************##############################################################********************###############%%%%%%%%%%%%%########################################******+++=====----------===+++*****++===--:::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################*******************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++**************************************************************************************************************##############**************************************####***************************************************************************************************************************+++++++++++=============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================+++++++++++++++++++++++++++=========================================================+++++++++++++++++++++++++++++++++++++++**+++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*****************************************************++++++++++++++++++++++++********************************************************************++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%#################################################################################################################*****+++****+***++***++*******++=============+++++++++++++++++++++++++++++++++++++++++++++++=======++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================+++++++++++***************************************************************************************************************++++********+++++++++++++++++++++++++++*****+**+**************#*#=..............................::::::::::::::::::::::::::+++++++++.. .-+++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--------::::::...............:::------------------------====+++**+++=-::....::-------====================================================++++***************************************************************************************************************************************************########################################***********************************************************#####################################################################################################################################################################***********************************************************************************#########****************************************************###########********************************************************###############################################################**********************#############%%%%%%%%%%%%%%%##########################################*****++++========---====++++*****+++==--::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################******************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++**************************************************************************************************************###############***********************************#####***************************************************************************************************************************++++++++++++============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================+++++++++++++++++++++++++++++++++=====================================================+++++++++++++++++++++++++++++++++++++++**++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++**+***********************************************+++++++++++++++++++++++++*******************************************************************++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%##################################################################################################################*******************************++==========++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================+++++++++++*****************************************************************************************************************+++++++++++++++++++++++++++++++++++++++**********************#***#-.............................::::::::::::::::::::::::::+++++++++.. .-++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======--------:::::................:::------------------------===++++**+++=--:....::--------===================================================+++++**************************************************************************************************************************************************########################################************************************************************###################################################################################################################################################################***********************************************************************************###########************************************************################****************************************#####*****##################################################################***********************############%%%%%%%%%%%%%%%%############################################*****+++++============+++*******++==---:::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################*****************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++************************************************************************************************************################*********************************######***************************************************************************************************************************+++++++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================+++====================+++++++++++++++++++++++++++++++++++++++++++++++========================================+++++++++++++++++++++++++++++++++++++++**++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++************************************************+++++++++++++++++++++++*********************************************************************++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%#####################################################################################################################*************++**************++++=======+++++++++++++++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================++++++++++++************************************++++++********************************************************++***************+++++++++++++++++++++++++++++++++++++++*****+***+***********#**#**.............................::::::::::::::::::::::::::+++++++++:  .:++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========---------:::::................:::------------------------===++++**+++==-::...::--------===================================================+++++**************************************************************************************************************************************************########################################************************************************************###################################################################################################################################################################***********************************************************************************###########************************************************#################************************************##############################################################################************************###########%%%%%%%%%%%%%%%%%%############################################******+++++++======++++********++===--:::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################************#**##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++***********************************************************************************************************#################*******************************######****************************************************************************************************************************+++++++++++++==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================+++++++++================+++++++++++++++++++++++++++++++++++++++++++++++++======================================+++++++++++++++++++++++++++++++++++++++**+++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++****+++********************************************++++++++++++++++++++***********************************************************************++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%#######################################################################################################################******************************+++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================++++++++++++************************************+++++++++*******************************************************++**************++++++++++++++++++++++++++++++++++++++++*********+**********#*****#=............................::::::::::::::::::::::::::+++++++++-  .:++++++++++++++++++++++++++++++++++++++++++++++++++===++*********++++++++++++++++++++++++++++++++++++++++++++++++++++=============---------:::::................:::------------------------===++++**+++==-::...::--------===================================================+++++*************************************************************************************************************************************************#########################################************************************************************###################################################################################################################################################################************************************************************************************###########**********************************************#####################********************************#############################################################################**************************###########%%%%%%%%%%%%%%%%%%###############################################*******++++++++++++*********+++==---::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################*************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++**********************************************************************************************************#################*****************************#######****************************************************************************************************************************++++++++++++++=========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++======================================+++++++++++++++++++++++++++++++++++++++**++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++**********************************************++++++++++++++++*************************************************************************+++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%###########################################################################################################################******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================++++++++++++++*************************************+++++++++++*******************************************************+++**********++++++++++++++++++++++++++++++++++++++++++*******++*************#*****:...........................::::::::::::::::::::::::::+++++++++=....+++++++++++++++++++++++++++++++++++++++++++++++======++*********+++++++++++++++++++++++++++++++++++++++++++++++++===============----------:::::................:::------------------------===++++***+++=-::...:::-------==================================================++++++*************************************************************************************************************************************************########################################*************************************************************###################################################################################################################################################################*************************************************************************************##########**********************************************#######################****************************##############################################################################***************************###########%%%%%%%%%%%%%%%%%%%################################################*********+++++++***********++===---:::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################**#*********##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++***********************************************************************************************************#################***************************#######**************************************************************************************************************************+******+++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================+++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================++++++++++++++++++++++++++++++++++++++++*+++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++*******************************************++++++++++++*****************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%%%#############################################################################################################################****+***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================++++++++++++++++++++++++++++*************************************++++++++++++++********************++********************************++++********+++++++++++++++++++++++++++++++++++++++++++++***************************............................:::::::::::::::::::::::::+++++++++=....=+++++++++++++++++++++++++++++++++++++++++++==========++*********++++++++++++++++++++++++++++++++++++++++++++++===============------------:::::................::-------------------------===++++***+++=--:...:::--------=================================================+++++++************************************************************************************************************************************************########################################*************************************************************###################################################################################################################################################################**************************************************************************************#######************************************************########################************************#####################################%%%%%%%%%##################################*****************************##########%%%%%%%%%%%%%%%%%%%%###################################################***********************+++==----:::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################***************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++************************************************************************************************************################****************************######**********************************************************************************************************************************+++++++++++====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================++++++++++++++++++++++++++++++++++++++++*++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++********************************************+++++++*****************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%@@@@%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%###############################################################################################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================++++++++++++++++++++++++++++*******************************++++****+++++++++++++++********************+++*******************************+++++****+++++++++++++++++++++++++++++++++++++++++++++++++*************************#=...........................:::::::::::::::::::::::::++++++++++....=+++++++++++++++++++++++++++++++++++++++++============++**********++++++++++++++++++++++++++++++++++++++++++=================-------------:::::................::-------------------------===++++***+++==-::..:::--------=================================================+++++++************************************************************************************************************************************************########################################*************************************************************###################################################################################################################################################################**************************************************************************************#######***********************************************##########################***********************#################################%%%%%%%%%%%%#################################******************************###########%%%%%%%%%%%%%%%%%%%%#######################################################********************+++==----::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################***************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++*************************************************************************************************************################**************************######************************************************************************************************************************************++++++++++++=================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================+++++++++++++++++++++++++++++++++++++++*+++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%##################################################################################################################################*************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++++++++++++++++++*********************************++++++++++++++++++++++++*******************+++++*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#*:..........................:::::::::::::::::::::::::+++=++++++....=++++++++++++++++++++++++++++++++++++++================++*********+++++++++++++++++++++++++++++++++++++++=================----------------:::::...............:::-------------------------===+++++**+++==-:::.:::---------================================================++++++++***********************************************************************************************************************************************########################################*************************************************************###################################################################################################################################################################************************************************************************************#########***********************************************###########################********************##############################%%%%%%%%%%%%%%%%##################################******************************###########%%%%%%%%%%%%%%%%%%%%%####################################################################******+++===----::::::::::--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################***************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++************************************************************************************************************###############***************************#####************************************************************************************************************************************+++++++++++++==============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================+++++++++++++++++++++++++++++++++++++++**+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%#####################################################################################################################################******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++*******************+++++*******************+***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+***************#+...........................::::::::::::::::::::::::+++=++++++:...-++++++++++++++++++++++++++++++++++++==================+++*********++++++++++++++++++++++++++++++++=+===================------------------:::::...............:::------------------------=====++++++++++=--::::::---------================================================++++++++***********************************************************************************************************************************************########################################*************************************************************##################################################################################################################################################################************************************************************************************##########***********************************************############################****************###########################%%%%%%%%%%%%%%%%%%%%%%################################********************************##########%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################****+++===----::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################***************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++*************************************************************************************************************##############**************************####***************************************************************************************************************************************++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================++++++++++++++++++++++++++++++++++++++++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%########################################################################################################################################************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++***********************************++++++++++++++++++++++++++*******************+++++*******************++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************=..........................::::::::::::::::::::::::+++==+++++-...-+++++++++++++++++++++++++++++++++======================++**********++++++++++++++++++++++++++========================--------------------:::::...............:::------------------------=====++++++++++=--::::::---------================================================++++++++**********************************************************************************************************************************************#########################################*************************************************************##################################################################################################################################################################************************************************************************************#########***********************************************##############################*************#########################%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*******************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################****+++===-----:::::----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################**************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++************************************************************************************************************#############***************************###***************************************************************************************************************************************++++++++++++++========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================++++++++++++++++++++++++++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%#############################################################################################################################################*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++*******************+++++********************+***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+**+************#***:.........................:::::::::::::::::::::::-+++==+++++-...-+++++++++++++++++++++++++++++++=========================++*********++++++++++++++++++++++++========================----------------------:::::..............:::-------------------------=====++++++++++=--::::::----------===============================================++++++++**********************************************************************************************************************************************####################################*#**#*************************************************************##################################################################################################################################################################*************************************************************************************########***********************************************###############################*********##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################****************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################****+++===-----:::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@########################################################################################################################################################################************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++*************************************************************************************************************############****************************#******************************************************************************************************************************************++++++++++++=====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+=====+++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%#%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%################################################################################################################################################********************************************************************+++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************++++++++++++++++++++++++++++++******************++++++********************++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+**+**************#*+..........................::::::::::::::::::::::-+++==+++++=...-+++++++++++++++++++++++++++++===========================+++*********++++++=+====================================-------------------------::::::.............:::-------------------------=====++++++++++=--::::::----------==============================================+++++++++**********************************************************************************************************************************************####################################*#**#*************************************************************##################################################################################################################################################################***************************************************************************************######***********************************************################################*****#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*******************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################****+++===-------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################*#****###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**************************************************************************************************************###########***********************************************************************************************************************************************************************++++++++++++==================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======+++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%#*#%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%###################################################################################################################################################*****************************************************************++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++****************************************+++++++++++++++++++++++++++++++******************++++++*****************#**++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*******+**************#***#-.........................::::::::::::::::-------+++==+++++=::::++++++++++++++++++++++++++===============================++*********++========================================--------------------------:::::::............:::--------------------------======++++++++===--:::::----------==============================================+++++++++*********************************************************************************************************************************************#################********########*******+#*************************************************************##################################################################################################################################################################***************************************************************************************######***********************************************##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################*********######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################***+++===------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################*####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++****************************************************************************************************************##########***********************************************************************************************************************************************************************+++++++++++==================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@%%%%%%@@@@@@@@@@@@%@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@%@@@@%%#*#%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%#####################################################################################################################################################**************************************************************+*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************++++++++++++++++++++++++++++++++*************#***+++++++********************+++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+***************##**#*:.......................:::::::::::::-----------+*+==++++++:::-++++++++++++++++++++++++==================================+++*******++=======================================----------------------------:::::::..........::::--------------------------=======+++++++===--::::::----------=============================================+++++++++*********************************************************************************************************************************************################*************#***********#*************************************************************##################################################################################################################################################################**************************************************************************************##****************************************************##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################***##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################***+++===-----------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################*###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++++****************************************************************************************************************#########************************************************************************************************************************************************************************+++++++++++=================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@%@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@%%#**#%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%#######################################################################################################################################################*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************+++++++++++++++++++++++++++++++******************++++++*******************#*+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#***#****#*#+.......................:::::::::---------------**+==++++++----+++++++++++++++++++++======================================++++******+=====================================-------------------------------:::::::.......:::::---------------------------=================--::::::----------=============================================+++++++++*********************************************************************************************************************************************#############****************************#*************************************************************##################################################################################################################################################################*************************************************************************************##*****************************************************###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################***+++====--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++++*****************************************************************************************************************########*************************************************************************************************************************************************************************+++++++++++================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@%@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@%#*++#%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%###########################################################################################################################################################**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************++++++++++++++++++++++++++++++++************#**#**+++++********************#**+++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#***#******##-.....................:::::::-------------=====**+==++++++====+++++++++++++++++++=========================================++++++++++==================================-------------------::::-----------:::::::::::.:::::::----------------------------================--::::::----------=============================================+++++++++*********************************************************************************************************************************************###########******************************#*************************************************************##################################################################################################################################################################********************************************************************************************************************************************###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################***++++===------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++++******************************************************************************************************************#######*************************************************************************************************************************************************************************+++++++++++===============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@%#**++#%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%#######################################################################################################################################################################**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************++++++++++++++++++++++++++++++++**********#******++++++********************#**+++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************#*###*#***:.................::::::::----------==========**+==++++++====++++++++++++++++==============================================+++++++===----===========================-------------------::::::-----------:::::::::::::::::-----------------------------================---:::::----------==============================================++++++++********************************************************************************************************************************************###########*****************************+***************************************************************##################################################################################################################################################################**********************************************************************************************************************************++++++****###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################****+++====--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------=*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++++*******************************************************************************************************************#######*******************************######************************************************************************************************************************************+++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@%#***++*%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%####################################################################################################################################################################%%%%%%%%%%%%#####################***###########*****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************+++++++++++++++++++++++++++++++++****************++++++**********************#*+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************##***#*#***#+.............::::::::::---------=============**+==++++++=====+++++++++++=============================================================-----=======================---------------------:::::::-----------::::::::::::::-------------------------------================---:::::-----------=============================================++++++++********************************************************************************************************************************************##########******************************+***************************************************************#################################################################################################################################################################********************************************************************************************************************************++++++++++***####################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################****++++====----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++++********************************************************************************************************************##########********************#######################***************************************************************************************************************************+++++++++++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########%%%@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%@%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@%#***+++*%%%@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%###############################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*#######**********+++++++*****************************************************************************************************************************++++++++++++++++++++++++++++++++*****************+++++**#********************#*+++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#****##**#**=.......::::::::::::--------=================***===+++++=====+++++++=================================================================-----======================-----------------------:::::::-----------::::::::::::---------------------------------================--:::::-----------============================================+++++++++********************************************************************************************************************************************#########*******************************+***************************************************************#################################################################################################################################################################*****************************************************************************************************************************++++++++++++++**################%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%################################################****+++====---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++++*********************************************************************************************************************###############################################################################*************************************************************************************************++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######*#%%%#******###%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%#***++++*%%%@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########****************************************************************************************************************************************++++++++++++++++++++++++++++++++*****************++++++**#********************#*++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#*#*#*##*#**:..::::::::::::---------====================***===+++++======++======================================================================-----====================------------------------::::::::------------::::::--------------------------------------================--::::-----------============================================++++++++********************************************************************************************************************************************#########********************************+***************************************************************#################################################################################################################################################################**************************************************************************************************************************+++++++========++***#############%%%%##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################****++++====--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++++*********************************************************************************************************************###################################################################################*********************************************************************************************++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@########*###***********##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@%***++++++%%%@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%#######################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***************************************************************************************************************************************+++++++++++++++++++++++++++++++++************#***++++++************************#**+++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#*****#**#*#+:::::::::-----------==================+====***+==+++++=-=--==========================================================================-----==================---------------------------::::::---------------------------------------------------------===============--::::-----------===========================================+++++++++********************************************************************************************************************************************#########*******************************++***************************************************************#################################################################################################################################################################************************************************************************************************************************+++++++====----===+***#############%%%%%#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*****+++=====--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**************************************************************************************+++++++++++*********************######################################################################################************++++*+*************************************************************************++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########*****************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%@@@@@@@@@@@@@@@@%@@@%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@%@@@%***+++++++#%%@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%############################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**************************************************************************************************************************************+++++++++++++++++++++++++++++++++***************+++++++***#********************#**+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#*##**##*#**=::::-----------===================++++++=+***===++++++----===========================================================================----================-----------------::---------:::::::::--------------------------------------------------------==============---:::-----------===========================================++++++++********************************************************************************************************************************************##########*******************************++***************************************************************#################################################################################################################################################################*********************************************************************************************+++++++++****************++++++====--------==++*#############%%%%%%%#############################*****###############%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################****++++====--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**********************************************************************************+***++++++++++++*********************######################################################################################***********++++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########******************%%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%@@%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@%#**++++++++#%%@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################%%%%%%#########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########****###**************************************************************************************************************************************++++++++++++++++++++++++++++++++*********#***#*+++++++*************************#**+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##***##*#*#**-----------====================+++++++++=+***===++++++----============================================================================----==============----------------::::---------:::::::::--------------------------------------------------------===============---::------------==========================================++++++++********************************************************************************************************************************************#########********************************++***************************************************************###############################################*#################################################################################################################*******************************************************************************************+++++++++++++*************+++++====----------==+**#############%%%%%%#############################*******##############%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*****++++=====--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++********************************************************************************++++++++++++++++++++*******************#######################################################################################***********+++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########******************#**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@%%%@@%%@@%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@%@@@@@%#*++++++++++#%%@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%######################################################################################################################################################################################################################################################**##*##*******************************************************************************************************************************+++++++++++++++++++++++++++++++++**********###*++++++++**************************#*++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+*****#**##**#**##+-----==================++++++++++++++++++**+===++++++--::-============================================================================------========--------------::::::::::------:::::::::::------------------------------------------------------=================-----------------==========================================++++++++********************************************************************************************************************************************########*********************************++***************************************************************##############################################*+################################################################################################################******************************************************************************************+++++++++++++++++*********+++++=====-----------==+**#############%%%%%#########################*************#############%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*****++++======-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++*******************************************************************************++++++++++++++++++++++++++++++**********#########################################################################################*********+++++**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########*********************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@%@@@@%@@@%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@#*+++++++++++#%%@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%##############################################################################################################################################################################################################################################################*****************************************************************************************************************************++++++++++++++++++++++++++++++++*******##*##**++++++++***************************#**++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+********######*****+-====================+++++++++++++++++++**+====+++++-:::-==============================================================================-------==----------------::::::::::::----::::::::::::--------------------------------------========--------==================----------------=========================================++++++++*********************************************************************************************************************************************########*********************************++***************************************************************##############################################*+################################################################################################################*****************************************************************************************++++++++++++++++++++*****+++++=====------------==++**#############%%%######################*******************############%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*****+++++=====--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++************+++***************************************************************++++++++++++++++++++++++++++++++++*******##########################################################################################*********+++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##########*********************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@%%%%@%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@#*++++++++++++#%%@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%##########################################################################################################################################################################################################################################################*##*######**********************************************************************************************************************++++++++++++++++++++++++++++++++******#***#**+++++++++****#*************************++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##*##**#**#*==============++++++++++++++++++++++++++**+====+++++-:::-===============================================================================----------------------::::::::::::::----::::::::::::--------------------------------------==================================----------------=========================================++++++++*********************************************************************************************************************************************########*********************************++***************************************************************##############################################*+################################################################################################################****************************************************************************************+++++========+++++++++++++++++====------------===++**#####################################*********************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*****+++++=====--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++***********++++++*************************************************************++++++++++++++++++++++++++++++++++++*****###########################################################################################*********++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########*********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@%*+++++++++++++*%%@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%#####################################################################################################################################################################################################################################################################********************************************************************************************************************+++++++++++++++++++++++++++++++*******#*##**+++++++++********************************+++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##*##*#*###**========+++++++++++++++++++++++++++++++**+====+++++-:::-================================================================================--------------------::::::::::::::::---:::::::::::----------------------=-=====-----========================================---------------========================================+++++++++********************************************************************************************************************************************#########*********************************++***************************************************************##############################################+*################################################################################################################***************************************************************************************+++++==========+++++++++++++++=====-------======+++**##################################**************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################*****+++++======-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**********++++++++************************************************************++++++++++++++++++++++++++++++++++++*****############################################################################################********++++**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########********************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%*++++++++++++++*%@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%######################################################################################################################################################################################################################################################**##############******************************************************************************************************************++++++++++++++++++++++++++++++++********##**+++++++++****#****************************+++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********##*#**#*#*+++=+++++++++++++++++++++++++++++++++++*++====+++++=:::-=================================================================================-----------------::::::::::::::::::::::::::::::::---------------------=====================================================----------------=======================================+++++++++********************************************************************************************************************************************########*********************************+++***************************************************************##############################################+*################################################################################################################**************************************************************************************+++++====----=====++++++++++++==============++++++***##############################********************************##########%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################*****+++++======--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------=*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**********+++++++++***********************************************************+++++++++++++++++++++++++++++++++++******#############################################################################################*******++++**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########***************#****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%*+++++++++++++++*%@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%%################################################################################################################################################################################################################################################*###****##*##********#*****************************************************************************************************************+++++++++++++++++++++++++++++++*****#*###**+++++++++*****#**********************#******++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#######*#*#*++++++++++++++++++++++++++++++++++++=+*++====+++++=:::-===================================================================================--------------::::::::::::::::::::::::::::::::-----------------------=====================================================---------------=======================================++++++++********************************************************************************************************************************************#########*********************************+++***************************************************************##############################################+#################################################################################################################****+********************************************************************************++++++===------=====+++++++++++========++++++++******##############################**********************************##########%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################*****+++++======--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------=*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**********+++++++++++********************************************************++++++++++++++++++++++++++++++++++++*****###############################################################################################******++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##########****************%****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%@@@@@@@@@%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@#+++++++++++++++++%@%@%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%####################################################################################################################################################################################################################################################*+*##**#******************************-...=***************************************************************************************+++++++++++++++++++++++++++++++*****####*+++++++++++*#*********************************++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#########****+++++++++++++++++++++++++++++++++++++**+====+++++=:::-=====================================================================================-----------:::::::::::::::::::::::::::::::::---------------------==================================================++====--------------======================================++++++++*********************************************************************************************************************************************#########*********************************++****************************************************************################################################################################################################################################################*#**********************************************************************************++++++===-------====+++++++++++++++++++++++********###############################*************************************##########%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################*****++++++======--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------::::::::::::::::::::::::::::::::::::::::::::--------------------------------------*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**********++++++++++++*******************************************************++++++++++++++++++++++++++++++++++++*****################################################################################################******+++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##########****************%***#@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@#++++++++++++++++++%@%@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%###################################################################################################################################################################################################################################################*****##*******************************+.   .+************************************************************************************+++++++++++++++++++++++++++++++*******##**++++++++++************************************+++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#########*#**++++++++++++++++++++++++++++++++++++*++====+++++=:::-======================================================================================--------:::::::::::::::::::::::::::::::::::---------------------==================================================+++===---------------====================================+++++++++********************************************************************************************************************************************##########*********************************++****************************************************************###############################################################################################################################################################******+*******+**********************************************************************++++++===------====+++++++++++++++++**********###################################*************************************############%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################*****++++++======---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------::::::::::::::::::::::::-------::::::::::--------------------------------------*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**********++++++++++++*******************************************************++++++++++++++++++++++++++++++++++++*****################################################################################################*******+++***************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*##*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########***************##***%@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@%@@@@@%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%+++==++++++++++++++%@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################%%%%%%%%%%####################################################################################################################################################################################################################################################***#**#******************************=.   .-***********************************************************************************++++++++++++++++++++++++++++++******##**++++++++++++*#*#********************************+++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###########*++++++++++++++++++++++++++++++++++++*++=====+++++::::=======================================================================================-----:::::::::::::::::::::::::::::::::::::---------------------==================================================++++===--------------====================================++++++++*********************************************************************************************************************************************##########*********************************++****************************************************************###############################################################################################################################################################*********+++**************************************************************************+++++====---=====++++++***************#########################################**************************************############%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################******+++++======----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------:::::::::::::::::::--------------------------------------------------------*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**********+++++++++++++*****************************************************++++++++++++++++++++++++++++++++++++******################################################################################################*******+++****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++%%*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########***************#****%@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%+======+++++++++++++#@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%##################################################################################################################################################################################################################################################**##***#*******************************:..   :+*****#***************************************************************************++++++++++++++++++++++++++++++*****##*+++++++++++++*##**********************************+++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********######*###**+++++++++++++++++++++++++++++++++=+*+======+++++::::========================================================================================---:::--:::::::::::::::::::::::::::::::::---------------------==================================================++++===--------------===================================++++++++**********************************************************************************************************************************************##########*********************************++****************************************************************###############################################################################################################################################################******#******++************************************************************************++++++=======++++++*************###########################################*****************************************##############%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################*****++++++======----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::--------------------------------------------------------+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++*****#################################################################################################*******+++*****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###########***************#****@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@*+=======++++++++++++#@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%%%%%%%%################################################################################################################################################################################################################################################*###**##********************************+. . . .=*******************************************************************************++++++++++++++++++++++++++++++****###*+++++++++++++*##************************************+++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#########*##*++++++++++++++++++++++++++++++++=+*+======+++++::::==========================================================================================-:::::-::::::::::::::::::::::::-::::::---------------------===================================================+++++===--------------=================================++++++++**********************************************************************************************************************************************###########*********************************++****************************************************************###############################################################################################################################################################******************************************************************************************++++++++++++*********##################################################******************************************##############%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################******++++++======-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------::::::::::::--------------------------------------------------------+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++*****#################################################################################################******++++******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########***************#***#@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@*+========++++++++++++#@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%##################################################################################################################################################################################################################################################*##***********************************=  . ...-******************************************************************************++++++++++++++++++++++++++++++**###**+++++++++++++**#**************************************++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********########*#**++++++++++++++++++++++++++++++++=+*+======+++++::::-==========================================================================================--:::::::::::::::::::::::::------::----------------------====================================================+++++===--------------================================++++++++***********************************************************************************************************************************************##########**********************************++****************************************************************###############################################################################################################################################################*****+****************************************************************************************+++*********######################################################********************************************##############%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################******++++++========-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------:::::::::--------------------------------------------------------+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********+++++++++++++++***************************************************++++++++++++++++++++++++++++++++++++*****##################################################################################################*****+++++******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%#*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########*******************%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@#=========+++++++++++++*%@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%###############################################################################################################################################################################################################################################**###**#*********************************- .. . .:****************************************************************************++++++++++++++++++++++++++++++**#***++++++++++++++**#***************************************++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########*#**+++++++++++++++++++++++++++++++=+*+======+++++::::-============================================================================================-::-::::::::::::::::::::-------------------------------====================================================++++++===-------------================================++++++++**********************************************************************************************************************************************###########*********************************+++****************************************************************##############################################################################################################################################################********+*********************************************************************************************###########################################################********************************************##############%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################*******++++++=======------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:-------------------====---------------::::---------------------------------------------------------=#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++++**************************************************++++++++++++++++++++++++++++++++++++****###################################################################################################*****++++++******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@############*******************@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@#+=========+++++++++++++*%@@%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%########################################################################################################################################################################################################################**#######################**##***********************************: .  . .:+#*************************************************************************+++++++++++++++++++++++++++++**#**++++++++++++++++**##**#***********************************+++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########*##*++++++++++++++++++++++++++++++=+*+======+++++-:::-=============================================================================================--:::::::::::::::::::::-------------------------------====================================================++++++===-------------===============================++++++++***********************************************************************************************************************************************###########*********************************+++****************************************************************##############################################################################################################################################################***+***+**++********************************************************************#############***###############################################################**********************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################*******+++++++=======-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------=========-----------------------------------------------------------------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++**********++++++++++++++++++*************************************************+++++++++++++++++++++++++++++++++++*****###################################################################################################*****++++++*******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########********************@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%@@@@@@@@@@%%%%@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%+==========+++++++++++++*%@@%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%#####################################################################################################################################################################################################################################################***********************************:.  ... .+************************************************************************+++++++++++++++++++++++++++++**#**++++++++*++++++*********************************************++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********##*##*##**#*++++++++++++++++++++++++++++++=+*+======+++++-:::-===============================================================================================-::::::::::::::::::::------------------------------=====================================================++++++===------------===============================+++++++++**********************************************************************************************************************************************############*********************************+++***************************************************************###############################################################################################################################################################*******+******************************************************************###################################################################################************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################*******++++++++========---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::----------------------------------===========-------------------------------------------------------------------=#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++**********++++++++++++++++++************************************************++++++++++++++++++++++++++++++++++++*****###################################################################################################*****+++++++******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@############********************@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%@@@@@@@@@@%%%%@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%+===========++++++++++++++%@@%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%####################################################################################################################################################################################################################################################************************************=. .. ...+**********************************************************************+++++++++++++++++++++++++++++**#*+++++++***++++++**********************************************++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********######*##*#*+++++++++++++++++++++++++++++=+*+======+++++-:::-=================================================================================================-:::::::::::::::::-------------------------------=====================================================++++++===--------===================================++++++++***********************************************************************************************************************************************############*********************************+++***************************************************************###############################################################################################################################################################*******************************************************************##########################################################################################************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################********++++++++========---------:::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------:---------------============----------------------------------------------------------------=*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++**********++++++++++++++++++************************************************+++++++++++++++++++++++++++++++++++******###################################################################################################*****+++++++*******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############********************@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%@%%@@@@@@@@@@@%%%%%@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@*============++++++++++++++%@%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################%%%%%%%%%%%##################################################################################################################################################################################################################################################**********************************#***+:  . . .=********************************************************************+++++++++++++++++++++++++++++*#*++++++++**+++++++***********************************************++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********##*##*##*##*++++++++++++++++++++++++++++=+*+======+++++-:::-==================================================================================================--:::::::::::::::-------------------------------=====================================================+++++===--------===================================+++++++++***********************************************************************************************************************************************###########*********************************+++****************************************************************###############################################################################################################################################################*************************************************************################################################################################################************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################********++++++++=======--------::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------==============------------------------------------------------------------=*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++++++***********************************************+++++++++++++++++++++++++++++++++++*****###################################################################################################*****+++++++++*******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############*******************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%%%@@@@@@@@@@@%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@#=======-====+++++++++++++++#@%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%##################################################%%%%%%%%%%%##################################################################################################################################################################################################################****#####**####################****************************************: .. . .=******************************************************************+++++++++++++++++++++++++++++***+++++++***+++++++************************************************++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===++++++++++++**********######*##**#*+++++++++++++++++++++++++++=+*+======+++++-:::-====================================================================================================--:::::::::::::-------------------------------======================================================+++===------=====================================+++++++++***********************************************************************************************************************************************############*********************************+++**********************************************************++++++##############################################################################################################################################################********************************************************######################################################################################################*************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################*********+++++++======--------:::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------==============------------------------==-------------------------------=*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********+++++++++++++++++++**********************************************+++++++++++++++++++++++++++++++++++*****###################################################################################################*****+++++++++********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############*******************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@%@%%%%%%%@@%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@#+=====---====+++++++++++++++#@%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%################################################################################################################################################################################################################************######################*********************************#*****=. . . .=*****************************************************************+++++++++++++++++++++++++++***++++++++***+++++****************************************************++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======++++++++++***********##*#######**+++++++++++++++++++++++++++=+*+======+++++-::::======================================================================================================--::::::::::-------------------------------============================================================-----======================================+++++++++***********************************************************************************************************************************************#############*********************************+++**********************************************************++++++##############################################################################################################################################################***********************************************###############################################################################################################*************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################*********+++++++======--------:::::::::::::::::::::::::::::::::::::::-------------------------------------:::--------------===============---------------------=====----------------------------=*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++++++++*********************************************++++++++++++++++++++++++++++++++++******###################################################################################################*****+++++++++*********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############********************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%+=====----====+++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%##########################################################################################################################################################################################################****************#**####################**************************************#*+.  .  .=***************************************************************+++++++++++++++++++++++++++*#*++++++++**+++++******************************************************++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++************###*##*##*#*++++++++++++++++++++++++++=+*+======+++++=::::========================================================================================================---:::::---------------------------------===========================================================--========================================++++++++++************************************************************************************************************************************************############**********************************++**********************************************************+++++++##############################################################################################################################################################***************************************#######################################################################################################################**************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################**********++++++======-------:::::::::::::::::::::::::::::::::::------------------------------------------:::::------------===============-------------------=========-----------------------=+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++++++++**********************************************++++++++++++++++++++++++++++++++******####################################################################################################*****++++++++++**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############********************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%+=====-----====+++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%#####################################################################################################################################################################################################********************#***###################******************************************:. .  .=*************************************************************++++++++++++++++++++++++++*#*++++++++***++++********************************************************++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++*************#*####**#*#*+++++++++++++++++++++++++=+++======+++++=::::===================================================================================================-=====----:::--------------------------------=====================================================================================================++++++++++************************************************************************************************************************************************#############*********************************+++*********************************************************++++++++##############################################################################################################################################################**********************************############################################################################################################################***************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################*********++++++======-------:::::::::::::::::::::::::::::::---------------------------------------------::::::-----------================------------------==========--------------------=+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++++++++**********************************************++++++++++++++++++++++++++++++++******####################################################################################################*****++++++++++**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############********************@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@*====------====++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%###################################################################################################################################################################################################********************##**####################******************************************=. .. .=***********************************************************+++++++++++++++++++++++++***+++++++++**+++++*********************************************************+++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++*************###**##***##+++++++++++++++++++++++++=+++======+++++=::::============================================================================================================------------------------------------=====================================================================================================+++++++++*************************************************************************************************************************************************#############*+*******************************+++*********************************************************++++++++##############################################################################################################################################################*****************************#################################################################################################################################***************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################********++++++=====-------::::::::::::::::::::::::::::------------------------------------------------:::---:----------=================----------------=============-----------------+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++++++++**********************************************++++++++++++++++++++++++++++++++******####################################################################################################*****+++++++++++***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############********************@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@@@@%@%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@#+====------====++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%################################################################################################################################################################################################****************************###################******************************************=.    .=*********************************************************++++++++++++++++++++++++****++++++++***+++++***********************************************************+++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============+++++++***************####**##*#*++++++++++++++++++++++++=**=======+++++=::::-=============================================================================================================----------------------------------===================================================================================================++++++++++*************************************************************************************************************************************************#############**********************************+++********************************************************++++====+#############################################################################################################################################################**************************#####################################################################################################################################************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################********++++++====----------:::::::::::::::::::::::------------------------------------------------::::::-------------==================---------------================-----------=+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++************++++++++++++++++++++***********************************************+++++++++++++++++++++++++++++++******####################################################################################################*****+++++++++++***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############*********************@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@%*====-------===+++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################%%%%%%%%%%%%#################################################################################################################################################################################################**************************####################******************************************+: .  .+*******************************************************+++++++++++++++++++++++*#**++++++++***++++++************************************************************+++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============+++++++*************###########**+++++++++++++++++++++++=*+=======++++++::::-===============================================================================================================-------------------------------===================================================================================================++++++++++**************************************************************************************************************************************************#############**********************************++*********************************************************+++=====+#############################################################################################################################################################**********************########################################################################################################################################***********************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################********+++++=====------------::::::::::::::::-----------------------------------------------------:::----:----------===================-------------====================-------+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++************++++++++++++++++++++************************************************++++++++++++++++++++++++++++++******####################################################################################################*****+++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############*********************@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%#+===-------====+++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################%%%%%%%%%%%%##################################################################################################################################################################################################***************************#################********************************************-    .+*****************************************************++++++++++++++++++++++*##*++++++++***++++++++************************************************************+++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============+++++++**************#########*##*++++++++++++++++++++++=*+=======++++++::::-==================================--------=======================================================================----------------------------===================================================================================================++++++++++**************************************************************************************************************************************************#############***********************************++********************************************************++++======#############################################################################################################################################################******************############################################################################################################################################**********************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################******+++++=====--------------------:::::---------------------=-------------------------------------:::::----------===================------------========================-=#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++**************++++++++++++++++++***************************************************++++++++++++++++++++++++++******#####################################################################################################*****++++++++++++***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############**********************@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@#*===--------====+++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################%%%%%%%%%%%%#################################################################################################################################################################################################****************************##################*******************************************=..  :+***************************************************++++++++++++++++++++*****++++++++++++++++++++*************************************************************+++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++***************#######*##*#+=+++++++++++++++++++=+*+=======++++++::::-=================================----------=========================================================================-------------------------==================================================================================================++++++++++**************************************************************************************************************************************************##############*+********************************+++********************************************************++++=====+#############################################################################################################################################################*************################################################################################################################################################*******************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################******+++++======---------------------------------------========----------------------------------:-:::::---------====================----------=========================#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++**************++++++++++++++++++******************************************************+++++++++++++++++++++++******#####################################################################################################*****++++++++++++***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############**********************@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@%*+==--------=====+++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################%%%%%%%%%%%%#################################################################################################################################################################################################****************************#################********************************************+... :**************************************************+++++++++++++++++++***#*++++++++++++++++++++***************************************************************+++***++++++++++++++++++++++++++++++++++++++++++++++++====+++++++++++============+++++****************########*##*++++++++++++++++++++=+*+=======++++++::::-================================------------===========================================================================----------------------=================================================================================================++++++++++***************************************************************************************************************************************************#############**+*+******************************+++********************************************************++++=====+#############################################################################################################################################################******######################################################################################################################################################*****************************************##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################******+++++========--------------------------------===========------------------------------------::::::---------=====================---------=======================*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++***************++++++++++++++++++**********************************************************+++++++++++++++++++******#####################################################################################################*****++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############**********************@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%*===---------====++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################%%%%%%%%%%%%%######################################################################################################################################*****#####################################################*************************#**#################********************************************+:.. -************************************************++++++++++++++++++****#**++++++++++++++++++++***************************************************************+++**+++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++===========+++++****************############*+++++++++++++++++++=+*+=======++++++::::-===============================---------------============================================================================-------------------================================================================================================++++++++++***************************************************************************************************************************************************##############*+*++*+****************************+++********************************************************++++=====*########################################################################################################################################################################################################################################################################################################################**********************************########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##################################################################################################*******++++++========--------------------------===============----------------------------------:::::::----------=======+++++==========-------=====================*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++****************++++++++++++++++++****************************************************************+++++++++++++******#####################################################################################################*****+++++++++++++***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############***********************@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%#=------:----=====++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%%%%%%%%%####################################################################################################################################********###################################################******************************#################**********************************#*********:   =**********************************************+++++++++++++++++********+++++++++++++++++++*****************************************************************++++*+++++++++++++++++++++++++++++++++++++++++++============+++++++++++===========+++++****************#####*##*#*#*++++++++++++++++++=+*+=======++++++:::::===========================--------------------===============================================================================--------------===============================================================================================++++++++++****************************************************************************************************************************************************##############**+*+*******************************++*********************************************************+++++==++*######################################################################################################################################################################################################################################################################################################################*******************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################********+++++++============-----------------=================----------------------------------:::::------------=======+++++++==========================+++++===*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++****************++++++++++++++++++******************************************************************++++++++++*******#####################################################################################################*****+++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############***********************@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@#+------:-:---====+++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%%%%%%%%%%##################################################################################################################################**********##################################################*******************************#################********************************************-. .+*******************************************++++++++++++++++++********++++++++++++++++++*******************************************************************++++*++++++++++++++++++++++++++++++++++++++++++==============+++++++++++===========++++*****************########*#*#++++++++++++++++++=+*+=======++++++:::::==========================---------------------====================================================================================--------===============================================================================================++++++++++*****************************************************************************************************************************************************##############*++***+**************************+**++*********************************************************+++++++++####################################################################################################################################################################################################################################################################################################################*******************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################********++++++++++============----------===================-----------------------------------:----------------======+++++++++=====================+++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++*******************++++++++++++++++++*********************************************************************++++++*******#####################################################################################################*****++++++++++++++************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############************************%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%#=:----::-----====+++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%%%%%%%%%%###################################################################################################################################*##*****#*##*#############################################******************************#*#################********************************************=. .******************************************+++++++++++++++++*******+++++++++++++++++++********************************************************************+++++*++++++++++++++++++++++++++++++++++++++++=================+++++++++++==========++++*****************############*+=+++++++++++++++=+*+=======++++++:::::=======================-------------------------=========-==========-====================================================================================================================================================================++++++++++*****************************************************************************************************************************************************##############*+++++******************************+*+**********************************************************++++++++###################################################################################################################################################################################################################################################################################################################***************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################**********++++++++++====================================----------------------------------------::-----------======++++++++++===================++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++********************++++++++++++++++++**********************************************************************++++********#####################################################################################################*****++++++++++++++************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############************************#@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@#*-:---:::-----====+++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################%%%%%%%%%%%%##################################################################################################################################**#*******+*##############################################********************************##################******************************************#*+. :***************************************+++++++++++++++++*******+++++++++++++++++++**********************************************************************+++++*+++++++++++++++++++++++++++++++++++++====================++++++++++++==========++++*****************############*++++++++++++++++=+++=======++++++:::::=======================-------------------------========================================================================================================================================================================================++++++++++******************************************************************************************************************************************************#############**+++++******************************+++***********************************************************+++++++################################################################################################################################################################################################################################################################################################################**************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################************+++++++++=================================-----------------------------------------------------======+++++++++++=================+++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************++++++++++++++**************************************************************************************#####################################################################################################*****++++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##############*************************@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%#+::::::::----=====+++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%%%%%%%%%%%%###############################################################################################################################**********++**#*###########################################**********************************#################********************************************+. =#***********************************++++++*++++++++**********+++++++++++++++++****#********************************************************************++++++++++++++++++++++++++++++++++++++++++======================++++++++++++==========++++*****************############*==++++++++++++==+++=======++++++:::::-======================-------------------------=======================================================================================================================================================================================++++++++++******************************************************************************************************************************************************##############*++++++******************************++**************************************************************+++**###############################################################################################################################################################################################################################################################################################################*********************###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################***********++++++++=============================-------------------------------------------------------======++++++++++++================+++++*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************+++++++++++++**************************************************************************************#####################################################################################################*****++++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############*************************%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%##=:::::::-----=====+++++++++++++++++++***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%%%%%%%%%%%%#############################################################################################################################**********++++*#*###########################################**********************************##################*********************************************:.+#*******************************++++++++++++++++************++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++=========================++++++++++++==========+++*****************##########*##+=++++++++++++==*++=======++++++:::::-==================--==-------------------------========-============================================================================================================================================================================++++++++++********************************************************************************************************************************************************#############*+++++++****************************+*++*******************************************************************###############################################################################################################################################################################################################################################################################################################*****************###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%####################################################################################################################################################***********++++++=========================----------------------------------------------------------=======+++++++++++++==============++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************++++++++++++**************************************************************************************######################################################################################################*****++++++++++++++************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############*************************#@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%#*-::::::-----=====+++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%###########################################################################################################################***********+++++*#*###########################################***********************************##################********************************************::********************************+++++++++++++****************+++++++++*******************************************************************************+++++++++++++++++++++++++++++++++++++++++==========================++++++++++++=========++++*****************##########*#*+=+++++++++++==*++=======++++++-::::-================-----------------------------=-========-==========================================================================================================================================================================++++++++++**********************************************************************************************************************************************************############*+++++++++***************************+*++*******************************************************************##############################################################################################################################################################################################################################################################################################################************#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################*********+++++++=====================-------------------------------------------------------------======+++++++++++++++===========+++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************+++++++++++***************************************************************************************######################################################################################################*****++++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############***************************%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%#+-::::::-----====++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%##########################################################################################################################***********+++++**############################################***********************************##################*********************************************--********************************************************************************#*******************************************************************++++++++++++++++++++++++++++++++++++++++============================++++++++++++=========+++******************##########*#*+=++++++++++==*++=======++++++-::::-==============---------------------------------========-====-====================================================================================================================================================================++++++++++**********************************************************************************************************************************************************#############*+++++++++***************************++++*******************************************************************##############################################################################################################################################################################################################################################################################################################******################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################********++++++++=================---------------------------------------------------------------======++++++++++++++++========+++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************+++++++++*****************************************************************************************######################################################################################################*****++++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############***************************#@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%#=-:::::-----=====++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%%%%%%%%%%%%%########################################################################################################################************++++++*#**#########################################*************************************##################********************************************=+**************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++============================++++++++++++==========++*******************#######*##*#*+++++++=====+*++=======++++++-::::-============-----------------------------------========-====---================================================================================================================================================================+++++++++++***********************************************************************************************************************************************************############*++++++++++***************************+++*******************************************************************#################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################********++++++++=============------------------------------------------------------------------=====++++++++++++++++++++==+++#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************+++++++++******++*********************************************************************************######################################################################################################*****++++++++++++++************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############****************************%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*=-:::::-----====+++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%%%%#######################################################################################################################*************++++++****########################################**************************************#################*******************************************#*+**************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++==============================++++++++++++=========+++******************############*+++++++=====+*+++======++++++-::::-=====-=====------------------------------------========-====:.:-==============================================================================================================================================================+++++++++++************************************************************************************************************************************************************###########**++++++++++************************++++++*******************************************************************########################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################********++++++++==========--------------------::::::::----------------------------------------======++++++++++++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************+++***********************************************************************************************######################################################################################################*****+++++++++++++*************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############*****************************#@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+=-::::-----=====+++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%%%%#####################################################################################################################******#***#****+++++*#**##########################################*************************************##################**********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++===============================++++++++++++=========++*******************#############++=+==+====+*++=======++++++-::::-======-----------------------------------------===--===-===--..::-============================================================================================================================================================++++++++***************************************************************************************************************************************************************###########*+++++++++++***********************+++++++*******************************************************************###################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################********+++++++=========----------------::::::::::::::---------------------------------------======++++++++++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************+++**********************************************************************************************#######################################################################################################*****+++++++++++++*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############******************************%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#==-:::------=====+++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################%%%%%%%%%%%%#####################################################################################################################*******##**#****+++++*#**############*############################**************************************#################*********************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++================================++++++++++++=========+++*****************#############*++=++=+===+*++=======++++++-::::-===--=------------------------------------------==--=====-=--::.::-==-=======================================================================================================================================================++++++++****************************************************************************************************************************************************************##########**+++++++++++***********************+++++++*******************************************************************###############################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################********+++++++========------------:::::::::::::::::::--------------------------------------======++++++++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************++***********************************************************************************************#######################################################################################################*****+++++++++++++**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############******************************#@@@@@@@@@@@@@@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%*==-:::------====++++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################%%%%%%%%%%%%###################################################################################################################********#*#*#****+++++#*+**##########*############################***************************************##################*******************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++================================+++++++++++++=========++******************#############*=+=+=====+*+++======++++++-::::-===---------------------------------------------=========-==-:..::::-=======================================================================================================================================================+++++++*******************************************************************************************************************************************************************#########*++++*+++++++++*********************++++++********************************************************************#########################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################********++++++=======-----------::::::::::::::::::::---------------------------------------======+++++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************#######################################################################################################*****+++++++++++++**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############*******************************#@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###===::-------=====++++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################%%%%%%%%%%%###################################################################################################################*******+*#**#**#**++++*#*+#*#######################################****************************************################******************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++=================================+++++++++++++========+++******************############*+=+=+====++++++=====++++++-::::-=-=-----------------------------------------------=======-===-:::..::======================================================================================================================================================+++++++********************************************************************************************************************************************************************#*######*+++++++++++++++****************+***+++++++********************************************************************####################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################********++++++=======--------:::::::::::::::::::::----------------------------------------======+++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************#######################################################################################################*****+++++++++++++**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################********************************%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%*==-.:-------=====+++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%%%%%%%%%%#################################################################################################################*******#*+*#***#**#*++++*#+*########################################*****************************************#################****************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++==================================++++++++++++=========+++*****************###########*#*+=======+++++++====++++++-::::-=-=-=---------------------------------------------===========-::..:::-====================================================================================================================================================+++++++***********************************************************************************************************************************************************************######*+++++++++++++++++++************+++++++++++********************************************************************################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################********++++++======--------::::::::::::::::::::-----------------------------------------=======++++++++++*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************########################################################################################################*****+++++++++++++**************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################*********************************%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%===:.:------=====++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################%%%%%%%%%%##*#############################################################################################################********#*+*#*#***#**++++#*+*########################################*****************************************################****************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++==================================+++++++++++++=========++******************#############*+======+++++++====++++++-::::-=-=-=---------------------------------------------=========-=-:::::::-===--====================================================================================================================================---=======+++++++*************************************************************************************************************************************************************************#####**+++++++++++++++++++***********+++++++++++********************************************************************##############################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################*******++++++=====--------:::::::::::::::::::-------------------------------------------======++++++++*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************########################################################################################################*****+++++++++++++**************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################*********************************#%@@@@@@@@@@@@@@@@@%@%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%*---.:-------====+++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%%%%%%%#%%###############################################################################################################*********#*++##*##*#*++++*#*+*########################################*****************************************#################**************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++==================================+++++++++++++=========++******************#############*+=====*++++++====++++++-:::::=-=-----------------------------------------------============:::.::.-=====--================================================================================================================================-::--======++++++++************************************************************************************************************************************************************************#####*+++++++++++++++++++++**********+++++++++++*********************************************************************############################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################****###################################********+++++=====-------:::::::::::::::::----------------------------------------------======++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************########################################################################################################*****+++++++++++++**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#################***********************************%@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%=--:.:------=====+++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################%%%%##%%%##############################################################################################################*******#**#*++*##**#**++++*#++########################################******************************************################****************************++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++===================================+++++++++++++========++******************##############+=====*++++++====++++++-:::::=-=-----------------------------------------------====-=======-.:.::.:==-=----=============================================================================================================================-::::-=====+++++++++************************************************************************************************************************************************************************######*+++*++*+++++++++++++++********++++++++++++********************************************************************#############################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################*******###################################*******+++++=====--------:::::::::::::::----------------------------------------------=======++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************########################################################################################################******++++++++++++***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################************************************%@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%*:::.::------=====+++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################%%%##*###########################################################################################################**********#*++*##***#*++++#*+*#####*##############################************************************************##############****************************=********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++====================================+++++++++++++========++******************###########*#*+====*+++++++=++++++++-:::::-------------------------------------------------=============-.::.:::=-=-=-.:--=========================================================================================================================-:::::--====+++++++++*************************************************************************************************************************************************************************#####*+++++++++++++++++++++++++**++++++++++++++++********************************************************************############################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################***********##################################********++++=====-------:::::::::::::-------------------------------------------------=======+*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************########################################################################################################******++++++++++++***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################**************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%=:::.:------=====++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################%%%%######*######################################################################################################*******##*#**++*##*****+++*#*+*#####*#############***###***********##**********************************************##############**************************#*-*#*****************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++===================================++++++++++++++=======++++****************############*#*====*++++++++++++++++-:::::-------------------------------------------------=============-:::::.:-==-=-::::--======================================================================================================================-::::::--===++++++++++************************************************************************************************************************************************************************#####**+++++++++++++++++++++++++++++++++++++++++++********************************************************************############################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################************###################################*******+++++=====------:::::::::::----------------------------------------------------=====*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************########################################################################################################******++++++++++++***************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#################***************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######::::::------====+++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################%#%%%############################################################################################################********#**#**++**##*##*+++*#++*###*########*#*********##########*###***********************************************##############***************************+-******************************************************************************************************+***********************************************++++++++++++++++++++++++++++++++++++++++++++====================================++++++++++++++=======+++******************######*#*#**#*==+*++++++++++++++++::::::--=---------------------------------------------===============::.::.:-=====:::::---===================================================================================================================-:::::::-===++++++++++*************************************************************************************************************************************************************************#####*+++++++++++++++++++++++++++++++++++++++++++*********************************************************************##########################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%########################################################################################################################*************####################################******+++++====--------::::::--------------------------------------------------------==+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************########################################################################################################*****++++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################*****************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####+:::::------=====+++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################%%%%############################################################################################################***********##*++***##*#**++#*+*#*#*###******#**++++++****#########**************************************************##############***************************--*****************************************************************************************************+***********************************************+++++++++++++++++++++++++++++++++++++++++++++====================================++++++++++++++======+++******************###########**#+=++++++++++++++++++::::.:--=--------------------------------------------================-:.::::-=-===-:::::-----================================================================================================================-::::::--===++++++++++************************************************************************************************************************************************************************######*+++++++++++++++++++++++++++++++++++++++++++*********************************************************************##########################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%###########################################################################################################################************#####################################******+++++====---------------------------------------------------------------------+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************########################################################################################################*****++++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#################******************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####=:::::-----=====++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################%%###########################################################################################################*********#***#*+++*##**#*++*#++*#*#*##*******+++++++++++*****##**#***************************************************#############****************************:=**#*************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++=====================================+++++++++++++=======++++*****************######*#**#*#*+++++++++++++*+++++::::.:--=-------------------------------------------=================-:::.:::=-===-:::::---::--==============================================================================================================--:::::--==++++++++++*************************************************************************************************************************************************************************#####*++++++++++++++++++++++++++++++++++++++++++++*********************************************************************#######################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################*************#####################################******+++++====------------------------------------------------------------------=#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************########################################################################################################*****++++++++++++****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################*******************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*:::::------=====++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################%%##*#######################################################################################################***********#****+++*###***++**+*#**********++++++++++++++****##**#****************************************************#############***************************=.=*********************************************************************++++++++**********************************************************************++++++++++++++++++++++++++++++++++++++++*+++++====================================++++++++++++++======+++++****************#########*##*#*++++++++++++*+++++::::.:--=---------------------------------------------================:::::.:====-=:::::---::::--=======================================================================================================++===--:::::--==++++++++++************************************************************************************************************************************************************************######*+*+++++++++++++++++++++++++++++++++++++++++**********************************************************************#########################################################################################################################################################*##########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################*************#####################################******++++======--------========----------------------------------------------=#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****++++++++++++****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################********************************************%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####+:::::-----=====+++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################%%#########################################################################################################************#*#**+++*#**#**++#*+*#*++++++++++++++++++++++++***##**#****************************************************#############***************************-.+***************************************************************+++++++++++++++********************************************************************++++++++++++++++++++++++++++++++++++++++*+++++=====================================++++++++++++++======+++++****************####*#*##*##*#*+++++++++++*+++++::::.:--=---------------------------------------------==============--:.:::::-===-=-::::---::::::--===================================================================================================++++===---:::--===++++++++++************************************************************************************************************************************************************************#####*++++++++++++++++++++++++++++++++++++++++++++*********************************************************************##########################################################################################################################################################*#######################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################************#######################################******+++++=====================-------------------------------------------=*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****++++++++++++****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%*++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################*********************************************#@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*+:::::----=====++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################%%#########################################################################################################***#*******#**#**+++*###*#*+*#++#*+++++++++++++++++++++++++*****##*****************************************************#############****************#**********..+***********************************************************+++++++++++++++++++*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++=====================================++++++++++++++=====+++++********************#**####*#*#*+++++++++**+*+++::::.:--=----------------------------------------------===============-::::::-=-===-::::---:::::::--================================================================================================+++++++===---:---==+++++++++++***********************************************************************************************************************************************************************######*++++++++++++++++++++++++++++++++++++++++++++*********************************************************************#########################################################################################################################################################******#################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################***********########################################******+++++===================-------------------------------------------*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%#+++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################***********************************************#%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**-::::----=====+++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################%%%########################################################################################################************####**+++*###*#*+*#++#*++++++++++++++++++++++++++**##***##***##**********************************************############**************************=.:*********************************************************++++++++++++++++++++++******************************************************************+++++++++++++++++++++++++++++++++++++++**+++++++===-=================================++++++++++++++=====+++++**********************########*++++++++++**++++::::::----------------------------------------------=================--:.::::-=-===-::::---:::::::-----==========================================================================================+++++++++++==-------==+++++++***************************************************************************************************************************************************************************#####*+++++++++++++++++++++++++++++++++++++++++++++*********************************************************************#########################################################################################################################################################************##########################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################**********#########################################*******++++++==================---------------------------------------*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@*++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################*************************************************#%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***--:::---======+++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################%%%#####**################################################################################################************#####**+++*#####**#*+*#*+++++++++++++++++++++++++++**#**#**###*********#**##*********#***********************############*************************#*: -********************************************************++++++++++++++++++++++******************************************************************+++++++++++++++++++++++++++++++++++++++*++++++++=====================================+++++++++++++++====++++++***********************####**#*+=++++++*****++::::::----------------------------------------------==================-:.::::-=-===-::::---:::::::-----=========================================================================================++++++++++++==-------==+++++++**************************************************************************************************************************************************************************######*++++++++++++++++++++++++++++++++++++++++++++**********************************************************************########################################################################################################################################################**************########################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%####################################################################################################################*******###########################################*******+++++++=================------------------------------------+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@%+++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#################****************************************************#%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***---::---=====++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################%%%#######################################################################################################************#####*++++*#####**#*+*#++++++++++++++++++++++++++++***#**##**#********#*******#*****#*************************##########***************************+..-******************************************************+++++++++++++++++++++++*******************************************+**********************++++++++++++++++++++++++++++++++++++++**+++++++++=====================================+++++++++++++++====++++++**************************####*+++++++*****++::::::----------------------------------------------================-=--.:::::======-::::--:::::::-----=======================================================================================+++++++++++++++==-----===+++++****************************************************************************************************************************************************************************#####**++++*+++++++++++++++++++++++++++++++++++++++**********************************************************************########################################################################################################################################################+***************######################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################*****#############################################********+++++++================---------------------------------+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@#+++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#################*****************************************************#@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***--::---======++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################%%%%#####################################################################################################*************#####*++++**##*#***++#*++++++++++++++++++++++++++++******************#*#*+++****#****************************###########***************************- .=*****************************************************+++++++++++++++++++++++*******************************************+*********************+++++++++++++++++++++++++++++++++++++*****++++++++======================================++++++++++++++=====++++++*************************##*##*++++++*****+=::::::---------------------------------------------=================-==-::::::===-==-:::::::::::::-----======================================================================================++++++++++++++++==-----===+++++***************************************************************************************************************************************************************************######*+++++++++++++++++++++++++++++++++++++++++++++*********************************************************************########################################################################################################################################################*+++***************####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################********+++++++===============-------------------------------+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@+++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################******************************************************#@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###**#+--::---=====+++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################%%%##*##################################################################################################*************#####*++++**####***+*#++++++++++++++++++++++++++++++**#***#*********#*#**+++**#*#**#**************************#########****************++++*******+. .+****************************************************++++++++++++++++++++++++****************+++**********************+**********************+++++++++++++++++++++++++++++++++++++*******+++++++======================================++++++++++++++====+++++++**************************#*#**+++++*****+=-:::::--=-----------------------------------------==================-=--::::::-==-==-:::::::::::::-----=====================================================================================++++++++++++**+++==-----==++++++**************************************************************************************************************************************************************************######*++++*++++++++++++++++++++++++++++++++++++++++**********************************************************************########################################################################################################################################################+++++*****************#################################################################################################################%%%%%%%%%%%%%%%%%%%%%########%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#############################################################################################################################################################################******+++++++=================--------------------------=#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****+++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@#+++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***#############******************************************************#@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###**#=-:.---=====++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################%%#####################################################################################################*************###*#*++++**####*#*+*#+++++++++++++++++++++++++++++++**#**#**********#**++++*#**#*****************************######****************++++++********=. :+*#*************************************************+++++++++++++++++++++++++++++***********+++**********************+**********************++++++++++++++++++++++++++++++++++++**********+++++======================================+++++++++++++++====++++++++************************##*##+++++******=-:::::--=-----------------------------------------==================-=-=::::::-======-::::::::::::-----=====================================================================================++++++++++*****++===----===+++++**************************************************************************************************************************************************************************#####**++*++++++++++++++++++++++++++++++++++++++++++**********************************************************************#######################################################################################################################################################*++++*******************##################################################################################################################%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################********+++++++==================---------------------=*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****+++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@*++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***############*******************************************************#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***=-::---====+++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################%#######################################################################################################***********######++++**####***+#*+++++++++++++++++++++++++++++++**************#****+++****##******************************###***************++++++++*********: .:**************************************************+++++++++++++++++++++++++++++++**********+++*********************+***********************+++++++++++++++++++++++++++++++++++************+++++========---===========================+++++++++++++++====+++++++***************************##*++++******=-:::::-==-----------------------------------------===================-==-:::::-======-::::::::::::-----====================================================================================+++++++++*******+++==----===++++**************************************************************************************************************************************************************************######*+++*++++++++++++++++++++++++++++++++++++++++++******************************************************************###########################################################################################################################################################+++++*****************###############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################********+++++++=================-------------------=*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%#+++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***############***********************#%%*****************************#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**=-.:--=====+++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################**##%######################################################################################################*************#*##**++++*###*#*+*#+++++++++++++++++++++++++++++++++**#*********#**#*++++*#**#**********************************************++++++++++*********+...-*************************************************++++++++++++++++++++++++++++++++********++++*********************+***********************++++++++++++++++++++++++++++++++++*************+++++=======----============================+++++++++++++++===++++++++*************************#**#*+++******=-:::::-==-----------------------------------------===================-=--::::::=====--::::::::::::-----==================================================================================+++++++++**********++==----===++++**************************************************************************************************************************************************************************#####*+++++++*+++++++++++++++++++++++++++++++++++++++**************************************************************##############################################################################################################################################################*++++*****************################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################*******+++++++================-----------------=*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@+++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################***********************%@@*****************************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**+=:.--=====++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################****#####*###*############################################################################################*************#####**++++*#*###*+#*+++++++++++++++++++++++++++++++++***#**###**#**#*++++*#***********************************************+++++++++++++*********-...=*************************************************+++++++++++++++++++++++++++++++********+++++********************+***********************+++++++++++++++++++++++++++++++++***************++=++===-=-==-:=============================+++++++++++++++===+++++++***************************#***++******=-:::::-===------------------------------------========================-==::::::======-::::::::::::-----==================================================================================+++++++************++==----===++++*************************************************************************************************************************************************************************######*++++++++++++++++++++**++++++++++++++++++++++++************************************************************#################################################################################################################################################################*+++****************####################################################################################################################################################################%%%%%%%%%%%%%%%%%%######################################################%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%####################################################################################################################################################################################*******+++++++=================-------------=*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##+++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################**********************#@@@****************************%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**+=::-======++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################***+*####################################################################################################***************##*##**+*++*##*##**#*++++++++++++++++++++++++++++++++++**##**#***#*#**++++*#*##******************************************++++++++++++++*********+....+*#*#*****************************************+++++++++++++++++++++++++++++++++++*******+++++*******************+***********************++++++++++++++++++++++++++++++++++***************+++++=======-=::==-===-=====================+++++++++++++++====+++++++****************************#**+*****+=-:::::-====-==--------------------------------========================-==::::::--=====-:::::::::::-----================================================================================++++++++*************++==----===++++*************************************************************************************************************************************************************************#####**++++++++++++++++++++**++++++++++++++++++++++++********************************************************#####################################################################################################################################################################*+******************#####################################################################################################################################################################%%%%%%%%%%%%#%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################################*******+++++++================-----------=+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#+++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################**********************%@@@#**************************#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**+=:-======++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################**++*##################################################################################################*****************#*###*+++++*##*#***#+++++++++++++++++++++++++++++++++++**#**###*##*#*+++++#*#*******************************************++++++++++++++**********=...:*********************************************+++++++++++++++++++++++++++++++++++*******++++********************+***********************+++++++++++++++++++++++++++++++++*****************++++=-=-=-==--.:============================+++++++++++++++===+++++++****************************##*******+---::::-====-======---------------------------=========================-==-:::::--=====-:::::::::::-----===============================================================================++++++++**************++==----===++++************************************************************************************************************************************************************************######*++++++++++++++++++++***+*++++++++++++++++++++++***************************************************###############%%%%######################################################################################################################################################*******************###########################################################################################################################################################################%%######################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################********++++++=========================+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********####################################################################################################################################################################################
****************************************************************************************************************************##########################################################################################################*****++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################**********************%@@@%**************************%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**==:-=====+++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################****###################################################################################################*****************#####*++*++*##*#**#*++++++++++++++++++++++++++++++++++++*#**##**#*##*++++*#*********************************************++++++++++++++**********:.. -**#*****************************************+++++++++++++++++++++++++++++++++++******+++++********************+***********************+++++++++++++++++++++++++++++++++******************++++-========: -=-===-=====================++++++++++++++++===+++++++****************************##******+---::::-=============-------------------------============================-:::::--=====-:::::::::::-----=============================================================================++++++++*****************+==----===++++************************************************************************************************************************************************************************#####**+*+++++++++++++++++****+*++++++++++++++++++++++*************************************************##############%%%%%%%######################################################################################################################################################******************#####################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################********++++++======================+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************###############################################################################################################################################################################
****************************************************************************************************************************#########################################################################################################******++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%######################**********************@@@@%*************************%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**+=--====++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################**####################################################################################################*****************#####*++*++*#**#**#*++++++++++++++++++++++++++++++++++++*#**##***##*+++++*#********************************************+++++++++++++++*********=....=*******************************************+++++++++++++++++++++++++++++++++++******+++++*******************+************************++++++++++++++++++++++++++++++++*******************++++-:======-=..-===========================++++++++++++++++==++++++++****************************##*****+---::::-==============------------------------=============================:::::-=-=====:::::::::::----============================================================================+++++++++******************+==----===++++***********************************************************************************************************************************************************************#####**++++++++++++++++++++***++++++++++++++++++++++++*************************************************###########%%%%%%%%%%%######################################################################################################################################################****************###########################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################################********+++++++===================#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************###########################################################################################################################################################################
****************************************************************************************************************************#########################################################################################################******++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=#%--=+*%@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################**********************@@@@@#***********************#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**++======++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################*#####################################################################################################*****************#####*+++++*###***#++++++++++++++++++++++++++++++++++++**#**#**#**#*+++++*#********************************************++++++++++++++**********-....+******************************************++++++++++++++++++++++++++++++++++++****++++++*******************+************************++++++++++++++++++++++++++++++++********************+++=.:====-=--..-=-=========================++++++++++++++++=+++++++++****************************#*****=----:::================----------------------==============================-:::::=====-=-::::::::::----==========================================================================++++++++++*******************++==---===++++**********************************************************************************************************************************************************************######*++*+++++++++++++++++****++++++++++++++++++++++++************************************************#########%%%%%%%%%%%%%#######################################################################################################################################################***************#############################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################################********+++++++================*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************************#########################################################################################################################################################################
****************************************************************************************************************************#########################################################################################################******++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=.:#%:...:=%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################*********************#@@@@@#**********************#@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####***++====+++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################*########################################################################################################****************##*##*++*++*#*#**#*++++++++++++++++++++++++++++++++++++*##**#****#*+++++***********************************************++++++++++++++*********+... .****#*************************************++++++++++++++++++++++++++++++++++++****++++++******************++************************+++++++++++++++++++++++++++++++*********************++++: -====-=-- :-==-========================++++++++++++++++++++++++++****************************#****=-----::=================-------------------================================-:::::-====-=-:::::::::-----========================================================================+++++++++++********************++==---===++++**********************************************************************************************************************************************************************#####**++++++++++++++++++++****++*+++++++++++++++++++++************************************************######%%%%%%%%%%%%%%%%#######################################################################################################################################################*#*************################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################################*******++++++==============*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***************************#######################################################################################################################################################################
****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+:.::#%::::.:*%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################*********************#@@@@@%**********************%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####****+++==++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################*###################################################################################################*#####****************#####*++**+*#*#**#*+++++++++++++++++++++++++++++++++++*#***##*#**#++++++***********************************************+++++++++++++**********-....:*****************************************+++++++++++++++++++++++++++++++++++****+++++++***************#**+*************************++++++++++++++++++++++++++++++*********************+*+++=  -=======: :============================++++++++++++++++++++++++++***************************##***=-----::=================------------------============================-===-=:::::-=-=====:::::::::-----=====================================================================++++++++++++**********************++==---===++++*********************************************************************************************************************************************************************######*++++++++++++++++++++****+++*+++++++++++++++++++++************************************************#####%%%%%%%%%%%%%%%%%#######################################################################################################################################################******##***####################################################################################################################################################################################################################################################################%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################******+++++=============*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************************######################################################################################################################################################################
****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*:..:.:#%::::::*%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@############################*********************%@@@@@@*********************%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****+++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################***###################################################################################################******##**#************#####*++*++*#****#++++++++++++++++++++++++++++++++++++#**##**#****++++++#*#**#*#***************************************+++++++++++++**********... .=****************************************+++++++++++++++++++++++++++++++++++****+++++++*****************++************************+++++++++++++++++++++++++++++++***********************++++: .-=======. -===========================++++++++++++++++++++++++++*****************************#**=-----::====-============---------------==================================-==-::::-=======:::::::::-----===================================================================+++++++++++++***********************++==---===++++********************************************************************************************************************************************************************######**++++++++++++++++++++****+*+++*++++++++++++++++++*************************************************#####%%%%%%%%%%%%%%%%%########################################################################################################################################################**********################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################****+++++============+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************#####################################################################################################################################################################
****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-.::::.:%%::.::=#%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%############################*********************%@@@@@@#*******************%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****+++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################***#################################################################################################*******#*##**#*************####*++*+**##****+++++++++++++++++++++++++++++++++++*#*****#****++++++*#**##*#***************************************++++++++++++++*********=... .+*********#*****************************+++++++++++++++++++++++++++++++++++****++++++******************+*************************+++++++++++++++++++++++++++++++***********************++++=. .-=-====-  ====-=======================++++++++++++++++++++++++++*******************************==-----:=================-----===============================================-::::-=-=====-::::::::-----================================================================++++++++++++++*************************++==---===++++********************************************************************************************************************************************************************######*++++++++++++++++++++*****++++**++++++++++++++++++**************************************************####%%%%%%%%%%%%%%%%%########################################################################################################################################################*********#################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################################****++++============+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************####################################################################################################################################################################
****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=:..::::.:%%:::+%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################**********************%@@@@@@%*****************#%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################**###################################################################################################***+***#*##*##*************####**+++**##**#*++++++++++++++++++++++++++++++++++*#***#**#**#*++++++*#*#*#*****************************************++++++++++++++*********: ....**#************************************+++++++++++++++++++++++++++++++++++***+++++++*****************++*************************++++++++++++++++++++++++++++++**************************+++-  :=====-=- .-===========================+++++++++++++++++++++++++*****************************#**=------==================---================================================-:::::=-=====-::::::::-----=============================================================++++++++++++++++**************************++==---===++++*******************************************************************************************************************************************************************######**+++++++++++++++++++******++++**+++++++++++++++++***************************************************####%%%%%%%%%%%%%%%%#########################################################################################################################################################*********##################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################***++++============+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************##################################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****+++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+:.::..:::.:%%::*%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################**********************%@@@@@@@%***************#%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################*##################################################################################################*#**++++*##*##*#**************#**#*******##***+++++++++++++++++++++++++++++++++++*#*****#**#*+++++++****#******************************************+++++++++++++++*******=. ...:***************************************++++++++++++++++++++++++++++++++++**++++++++*****************++*************************+++++++++++++++++++++++++++++***************************++++.  :-=-====: :===========================++++++++++++++++++++++++++*******************************+=-----===================================================================--=:::::-=======::::::::-----==========================================================+++++++++++++++++****************************++==---==++++********************************************************************************************************************************************************************#####**+++++++++++++++++++******+++++**+++++++++++++++++***************************************************####%%%%%%%%%%%%%%%%#########################################################################################################################################################********###*###############################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################***++++==============#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************#################################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-.::.::::.:.-%%-+%@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%@@@@@############################**********************%@@@@@@@@%#************%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################################*###***+++++**####*##**************##*#**+****##*#*++++++++++++++++++++++++++++++++++*##****#***#*++++++*#*#********************************************+++++++++++++++*******:.....=***#**********************************+++++++++++++++++++++++++++++++++***++++++++*****************+*************************++++++++++++++++++++++++++++++****************************+++-   -====-=-. -===========================++++++++++++++++++++++++++****************************#**+=----====================================================================-=-::::-=======-:::::::----=========================================================++++++++++++++++++*************************#****+===--==++++********************************************************************************************************************************************************************#####*++++++++++++++++++++******++++***+++++++++++++++++****************************************************###%%%%%%%%%%%%%%%##############################################################################################################################################################****##***###############################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################***++++==============*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************#################################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=..:.::::.::..=%%+%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%@@@@@############################**********************%@@@@@@@@@@%#********%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%##%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################***+++++++++*######***************#*##*******##*#*++++++++++++++++++++++++++++++++++*#****#*#*#*+++++++*##*********************************************++++++++++++++++*****+......+#************************************+++++++++++++++++++++++++++++++++**+++++++++****************++*************************+++++++++++++++++++++++++++++*********************##******++++.   -======-  -===========================++++++++++++++++++++++++++*******************************=----======================================================================-::::-=======-::::::-----====================================================+++++++++++++++++++++***************************#****++==-====+++*******************************************************************************************************************************************************************#####**++*+++*++++++++++++*******++++**++++++++++++++++++****************************************************####%%%%%%%%%%%%%%##############################################################################################################################################################***###***################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################***+++===============*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************################################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:.::..:::.::::.+%%#%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%@@@@@############################**********************%@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%##%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################################*****++++++++++++*###**#***************#####******#*#*++++++++++++++++++++++++++++++++++****#*#***##*+++++++************************************************++++++++++++++++*****- ....:*#***********************************++++++++++++++++++++++++++++++++++*++++++++****************++**************************++++++++++++++++++++++++++++*********************###******++++=   .-==-===- .-=-========================+++++++++++++++++++++++++++*******************************=---======================================================================-:::::=======-::::::-----============================================+++++++++++++++++++++++++++****************************##****++=======+++******************************************************************************************************************************************************************######*++++++++++++++++++++*******++*+**+++++++++++++++++*****************************************************####%%%%%%%%%%%%%%##############################################################################################################################################################***###***#################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################**+++===============+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************################################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@#=.:::.:.:..:.:.::*%%%%%%%%%#%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%@@@@@@############################**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%#*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################*******+++++++++++++++*######***************#####******###*++++++++++++++++++++++++++++++++++***#****#**#+++++++*#*#*********************************************+++++++++++++++++++*+......-************************************+++++++++++++++++++++++++++++++++++++++++++****************++**************************++++++++++++++++++++++++++++*******************#####*******++++:   :-======. :-==========================+++++++++++++++++++++++++++*******************************=--===============================================================-=======-::::-=======::::::-----==================================+++++++++++++++++++++++++++++++++********************************##****++=======+++******************************************************************************************************************************************************************#####**+*+++++++++++++++++*******+*+*+**+++++++++++++++++*****************************************************####%%%%%%%%%%%%%%##############################################################################################################################################################***###***#################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################***+++==============+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************###############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@%%@@@@@@@+:.:::::::.::::::.:#%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%@@@@@@%#############%#############**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%#*#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################*****+++++++++++++++++++*#####*****************####******##**+++++++++++++++++++++++++++++++++*##*#*#*#**#*+++++++*#***********************************************++++++++++++++++++++-......=***********************************++++++++++++++++++++++++++++++++++++++++*++****************+**************************++++++++++++++++++++++++++++*******************######*******++++=.   :=======  -===========================++++++++++++++++++++++++++*******************************+-========================================================================-::::-=======-:::::----=============================+++++++++++++++++++++++++++++++++++++*********************************####***++=======++++****************************************************************************************************************************************************************#####***++++++++++++++++++*********+****++++++++++++++++++****************************************************#####%%%%%%%%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################***+++++============+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************###############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@%%@%@@@#-:.:..:::.::.::.::::#%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%@@@@@@%############%@#############**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%#*#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################**###########**##############################################****##*++++++++++++++++++++++*####******************###********#*++++++++++++++++++++++++++++++++++*#**##****#*+++++++**#**++++++++*************************************+++++++++++++++++++=.......+**********************************+++++++++++++++++++++++++++++++++++++++++++***************++**************************+++++++++++++++++++++++++++******************#########*******++++-    -======-  -==========================++++++++++++++++++++++++++++******************************+========================================================================-::::-=======-:::::----===================++++++++++++++++++++++++++++++++++++++++++++***********************************#####***++=======++++****************************************************************************************************************************************************************#####**+++++++++++++++++++*********+***+++++++++++++++++++****************************************************#####%%%%%%%%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################****++++++++========#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************##############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@%%%@@%*::::::.::::::::.:::::%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%@@@@@@@###########%@@#############**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%#**%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################***#########################################################**+***#**++++++++++++++++++++++*####******************####******##*+++++++++++++++++++++++++++++++++*#**#***#**#*+++++++*##*+++++++++**************************************++++++++++++++++++-......:**********************************++++++++++++++++++++++++++++++++++++++++++***************++***************************++++++++++++++++++++++++++*****************############******+++++:   .-======: .====-======================++++++++++++++++++++++++++++******************************+========================================================================-:::-=======-::::----==============++++++++++++++++++++++++++++++++++++++++++++++++*************************************#####***++=======++++***************************************************************************************************************************************************************#####**+++++++++++++++++++*********+****+++++++++++++++++++****************************************************#####%%%%%%%%%%%%#######*################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################*******+++++++=====*%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%********###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************##############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================================++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@%%%@@#-:..::.::::::..:.::::::%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%@@@@@@%##########@@@#############**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%***#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################****####*****#######*########################################**+++**##**+++++++++++++++++++++*####******************####******##*+++++++++++++++++++++++++++++++++**#****#**#*++++++++*#**++++++++**************************************+++++++++++++++++++.......=***#*****************************++++++++++++++++++++++++++++++++++++++++++***************++**************************+++++++++++++++++++++++++++****************#############*******++++=.   .=======. .===========================+++++++++++++++++++++++++++*******************************========================================================================-::::=======--:::----=========++++++++++++++++++++++++++++++++++++++++++++++++++****************************************#####****++======++++**************************************************************************************************************************************************************######*+++++++++++++++++++*********+*****+++++++++++++++++++***************************************************#####%%%%%%%%%%%%%######**################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################*********+++++===*%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************************************#############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================+++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@%%@@@%%%%+::::::::.::..:::.::.::::%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%@@@@@@@#########%@@@#############**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%***#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################****####******###############################################****++***#**+++++++++++++++++++++*###********************##*******##*++++++++++++++++++++++++++++++++*##********#*+++++++**#*+++++++++**************************************++++++++++++++++++-.......+#*******************************++++++++++++++++++++++++++++++++++++++++++**************++***************************++++++++++++++++++++++++++**************#################*******++++-    :=======. :===--======================+++++++++++++++++++++++++++*******************************=======================================================================-::::-=======-::----========++++++++++++++++++++++++++++++++++++++++++++++++*******************************************#######***++======+++***************************************************************************************************************************************************************#####***+*+++++++++++++++****************+++++++++++++++++++**************************************************######%%%%%%%%%%%%#######*##*##############################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################*******+++++*#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************************************#############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@%*%@%%%#-:::::::::::::::::::.:::::%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%@@@@@@@%#######%@@@@#############**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%****%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%#######################################################################################################*****##********################################################**#*****##**++++++++++++++++++++*###***********************+++***##*++++++++++++++++++++++++++++++++**##*#**#*#*++++++++*##*+++++++++**************************************++++++++++++++++++: .....:*#******************************++++++++++++++++++++++++++++++++++++++++++**************++***************************+++++++++++++++++++++++++*************####################*******++++:.. .-======-  -==========================+++++++++++++++++++++++++++*******************************+=======================================================================-:::-=======-::----=====+++++++++++++++++++++++++++++++++++++++++++++++***********************************************#######***++======+++**************************************************************************************************************************************************************######*+++*++++++++++++++****************+++++++++++++++++++**************************************************#######%%%%%%%%%%%%#######*##*##############################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################*******++*#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********##################################################################################################################################################################################################################################*###############################################################################################################################################################################################################################################*************************************#############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@*=#%%*:..::.:::::::.:::..::::::.:%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@%%%%%@@@@@@#############**********************%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%****#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%######################################################################################################*****##*********######**########################################*##******##*+++++++++++++++++++**###*********************+++++***##*+++++++++++++++++++++++++++++++**#**#*****#*++++++++*#*++++++++++*************************************++++++++++++++++++-.......-*#****************************++++++++++++++++++++++++++++++++++++++++++**************++***************************++++++++++++++++++++++++++************######################******++++=.....=======:  -=--=======================+++++++++++++++++++++++++++*******************************+======================================================================-:::-=======--:----====+++++++++++++++++++++++++++++++++++++++++++****************************************************#######***++======+++**************************************************************************************************************************************************************#####*+*+*+++++++++++++++***************++++++++++++++++++++************************************************#######%#%%%%%%%%%%%########**################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################*******#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%********##################################################################################################################################################################################################################################***##############################################################################################################################################################################################################################################**************************************############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=#@@@@@@@@@@@*::*#::::::::::::::::::::::=:::.:%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@#############*********************#@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%#****#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%######################################################################################################*****#*#********####*****#####################################*##*##########**++++++++++++++++++**##********************+++++++***#*++++++++++++++++++++++++++++++++****#*#*#***++++++++*##*+++++++++++************************************++++++++++++++++++:.......+*****************************++++++++++++++++++++++++++++++++++++++++++*************+++***************************+++++++++++++++++++++++++************########################*******+++-....:=======. .-::-=======================+++++++++++++++++++++++++++*******************************+=====================================================================-:::-========------====+++++++++++++++++++++++++++++******************************************************************#######***++======+++*************************************************************************************************************************************************************#####*+**++*+++++++++++++***************+++++++++++++++++++++**********************************************########%%%%%%%%%%%%%%########**################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################****#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%********##################################################################################################################################################################################################################################***##############################################################################################################################################################################################################################################**************************************############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================+++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*%@@@@@@@@@*::##::::::::::::::::::::.=+:::::%%%%%%%%%%#%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%#+%%@@@@@@@@@@@@@@@@@@@@############**********************@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%#*****%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%#####################################################################################################*****#***********##*#*****##########%########################*###############**++++++++++++++++++**##********************++++++++*##*+++++++++++++++++++++++++++++++*#*******###*++++++++*#**++++++++++++**********************************++++++++++++++++++=.......:**#*#************************++++++++++++++++++++++++++++++++++++++++++*************++****************************+++++++++++++++++++++++*************##########################*****+**++:....-======-  ...:-=======================+++++++++++++++++++++++++++*******************************+=====================================================================-:::========-:---====++++++++++++++++++++++*+***********************************************************************########***+++=====++++***********************************************************************************************************************************************************######**+++*++++++++++++++***************++++++++++++++++++++*********************************************#########%%#%%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%********################################################################################################################################################################################################################################******#############################################################################################################################################################################################################################################***************************************###########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================+++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-+%@@@@@@@%=::##:::::::::::::::::::::#-::::-%%%%%%%%%%#%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%=.@@%@@@@@@@@@@@@@@@@@@@###########**********************%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%#*****#@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%#####################################################################################################*****************##*#***+**#####*#############################################***+++++++++++++++++**##*******************++++++++*###*++++++++++++++++++++++++++++++****##***#*#*++++++++*##*++++++++++++***********************************++++++++++++++++++: .... .-#*#*************************+++++++++++++++++++++++++++++++++++++++++**************++***************************++++++++++++++++++++++++*************###########################*******++=.....-======-  :-::=-=====================+++++++++++++++++++++++++++********************************+====================================================================-:::-=======-----===++++++++++++++++++******************************************************************************########***+++=====++++**********************************************************************************************************************************************************######***+++++++++++++++++***************+++++++++++++++++++++******************************************##########%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%%%%%%########################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%********################################################################################################################################################################################################################################******#############################################################################################################################################################################################################################################***************************************###########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================+++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--=%@@@@@%+:.-%+:::::::::::::::::::.+#::::.=%%%%%%#%%%#%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%#. %@@@@@@@@@@@@@@@@@@@@@##########**********************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%#*****#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%####################################################################################################******************##*#******#####**#####################**#################*#####***++++++++++++++++**##*******************++++++++*###+++++++++++++++++++++++++++++++*#*###**#*##*++++++++###*++++++++++++***************#*******************++++++++++++++++*=........+##***********************#*+++++++++++++++++++++++++++++++++++++++++*************++****************************+++++++++++++++++++++++*************#############################*******++=....:=======: .--::=======================+++++++++++++++++++++++++++********************************====================================================================-:::-========---====+++++++++++++***********************************************************************************########****++=====++++**********************************************************************************************************************************************************#####**++++++++++++++++++****************+++++++++++++++++++++************************************################%%%%#%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################%%%%%%%%%%%%#######################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###############################################################################################################################################################################################################################******#############################################################################################################################################################################################################################################***************************************###########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:=#%%*-:.::+#-::::::::::::::::::::#=::::.*%%%%%%###%#%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%+  %@@@@@@@@@@@@@@@@@@@@@########***********************#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%#******%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%####################################################################################################*******************#*#******#####+*#########################################*######***+++++++++++++++**#********************+++++++***#*++++++++++++++++++++++++++++++*#####*****#*++++++++*##*++++++++++++++*************#********************++++++++++++++++*-.......:**#**#*******************#*+++++++++++++++++++++++++++++++++++++++++*************+*****************************+++++++++++++++++++++++*************##############################*******++:....:=====-=. :--:-=======================+++++++++++++++++++++++++++*******************************+====================================================================-::-========---===+++++++++++**************************************************************************************########****+++====++++*********************************************************************************************************************************************************######*++++++++++++++++++****************+++++++++++++++++++++****************************########################%%%%##%%%%%%%%%%################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%%%%%%%%%%%%%######################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********##############################################################################################################################################################################################################################********############################################################################################################################################################################################################################################****************************************##########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******+++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#########*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================================+++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::::::::##::::::::::::::::::::+%:::::.#%%%%%#########%%%%%%%%%%@@@@@%%%%%%%%%%%%%%:  %@@%@%%@@@@@@@@@@@@@@@%######************************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%*******#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%####################################################################################################****************************#####++*#####**##########***######**######################***+++++++++++++**#********************++++*++**#*+++++++++++++++++++++++++++++++*#**##**####*++++++++*##++++++++++++++**************#********************+++++++++++++*+++: ......+****#*******************#*++++++++++++++++++++++++++++++++++++++++*************++****************************+++++++++++++++++++++++*************################################******++=:....-======-..---:-======================++++++++++++++++++++++++++++*******************************+===================================================================-:::=========--===+++++++++************************************************************************************############****+++===+++++********************************************************************************************************************************************************######***++**++++++++++++*****************+++++++++++++++++++++**********************###########################%%%%%%###%%%%%%%%%%#############################################################################################################################################################*################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%%%%%%%%%%%#####################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**********#############################################################################################################################################################################################################################********############################################################################################################################################################################################################################################****************************************##########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******+++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================================+++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::::.=##::::::::::::::::::::#*:.::.:%%%%%%###########%%%%%%%%@@@@%%%%%%%%%%%%%%+   %@@@@%%%@@@@@@@@@@@@@@%######***********************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%********%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%####################################################################################################*****************************####++*#####*+++***########*#***###################*#######****+++++++++++**#***********************++++**#*++++++++++++++++++++++++++++++*#*###**##*#*++++++++*##*+++++++++++++***************##*******************+++++++++++++*+*=.......-#*#********************#**++++++++++++++++++++++++++++++++++++++++*************+*****************************++++++++++++++++++++++**************################################*******++-.....-======:.:-=---======================++++++++++++++++++++++++++++*******************************+==================================================================-:::-========-===+++++++++************************************************************************************#############****+++===+++++********************************************************************************************************************************************************######*++++++++++++++++++***************+++++++++++++++++++++++****************#################################%%%%%%###%%%%%%%%%###############################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%@@@@@@@@@@@%%%%%%####################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+********#############################################################################################################################################################################################################################*********###########################################################################################################################################################################################################################################****************************************##########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******+++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::::::::*%#:::::::::::::::::::=%-..::.-%%%%%%###########%%%%%%#%@@@%%%%%%%%%%%%%%#:  .@@@@@%%%@@@@@@@@@@@@@@%######**********************#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%#********%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%####################################################################################################*****************************####*+**####*++++++++**##########**###########################***++++++++++*************************+*+++*#*+++++++++++++++++++++++++++++++**##*##*#*##*++++++++*#*+++++++++++++****************###******************++++++++++++++++-.......*##**#*****************#*++++++++++++++++++++++++++++++++++++++++*************+*****#***********************+++++++++++++++++++++++*************##################################*******++:.....======-..-==---======================++++++++++++++++++++++++++++*******************************+==================================================================-::-============++++++++************************************************************************************##############****++++==+++++*******************************************************************************************************************************************************######*+*+++++++++++++++****************++++++++++++++++++++++++************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%@@@@@@@@@@@@@@@%%%%%###################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+*********############################################################################################################################################################################################################################**********##########################################################################################################################################################################################################################################****************************************##########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******+++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::.:=###:::::::::::::::::::##:.::::=%%%%%%############%%%%%#%@@@%%%%%%%%%%%%%%+   :@@@@@%%%%@@@@@@@@@@@@@%######**********************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%#********#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%####################################################################################################*****************************###**++*#####*++++++++++++**#################################*##***+++++++++*************************+++++*#+++++++++++++++++++++++++++++++**#**##*####*+++++++++**+++++++++++++****************###**#***************+++++++++++*+++++.......=#*#*******************#*++++++++++++++++++++++++++++++++++++++++*************+**#**#********#**************+++++++++++++++++++++++************###################################*******++=......=====-:::-==---=====================++++++++++++++++++++++++++++********************************+=-===============================================================-::-============+++++++*************************************************************************************##############****++++==+++++*****************************************************************************************************************************************************+*######*+*+*+++++++++++++****************++++++++++++++++++++++++********########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%@@@@@@@@@@@@@@@@@@%%%%###################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*++********############################################################################################################################################################################################################################**********##########################################################################################################################################################################################################################################****************************************##########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******+++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###########******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================+++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::::*##*::::::::::::::::::-%+.::::.*%%%%%#################%#+@@%%%%%%%%%%%%%%#:.  -@@@@%%%%%@@@@@@@@@@@@@%######*********************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**+++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%#+********%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%###################################################################################################******************************####*++*#####*++++++++++++++++***########**######*#*###############**++++++++*************************+++++#*+++++++++++++++++++++++++++++++*#**#*####*#*+++++++++*++++++++++++++****************#*###****************++++++++++++++++-......:**#*#****##*#*******#*#*++++++++++++++++++++++++++++++++++++++++************+***#***#****##**#************++++++++++++++++++++++++***********#####################################******+++-.....:=====-:::-==--======================++++++++++++++++++++++++++++********************************+================================================================-::-===========+++++++************************************************************************************################*****++++++++++****************************************************************************************************************************************************+*######*+**++++++++++++++*#***************+++++++++++++++++++++++******############################**############################**#########################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%@@@@@@@@@@@@@@@@@@@@%%%%###################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*++*********#########################################################################################################################################################################################################################************##########################################################################################################################################################################################################################################*****************************************#########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******+++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***############*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================================++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::::###*::::::::::::::::::+%-.:::::#%%%%%#################%=:+%%#%%%%%%%%%%%%+..  +@@@@@%%%%%@@@@@@@@@@@@%######*********************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%#++*******#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################******************************####*+++*####*+++++++++++++++++++++**#################**############****++++++************************+++++*#+++++++++++++++++++++++++++++++*#*##*####*#*+++++++++++++++++++++++++******************#******************+++++++++++++*+=.......+#*#*####**#*********#*++++++++++++++++++++++++++++++++++++++++*******#*****+***#*******####*****#*******++++++++++++++++++++++++************#####################################*******++=......-====-::---=---======================++++++++++++++++++++++++++++*******************************++===============================================================--:-===========++++++*************************************************************************************################*****++++++++++******************************************************************************************************************************************************#####***+*+++++++++++++*########*******+++++++++++++++++++++++++**###########################*****++*#*########*******************#########################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%#######################################################################################%%%%########%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++*********#########################################################################################################################################################################################################################************##########################################################################################################################################################################################################################################*****************************************#########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################*****++++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***############*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::.-###=.:::::::::::.:::::%#.::::::#%%%%%################%#-.:#%%%%%%%%%%%%%%-..  *@@@@@%%%%%%%@@@@@@@@@@%######********************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%#++*******#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################*******************************###*+++*#####*+++++++++++++++++++++++***##%%#####*##############**###***++++++***********************++++++#*+++++++++++++++++++++++++++++++**##*#*#**##*+++++++++++++++++++++++++*****************#*******************+++++++++++++++:......:*******##*#*****##**#*++++++++++++++++++++++++++++++++++++++++***********++***#*******######***********++++++++++++++++++++++++*************######################################******+++-......-===------==---======================+++++++++++++++++++++++++++********************************++===============================================================-::-==========++++++***********************************************************************************##################*****++++++++++***************************************************************************************************************************************************+*#####**+*+*++++++++++++*############****++*++++++++++++++++++++++*############%%%%########*********+=+***#**********************++*#########################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%######################################################################################%%%%%########%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#+++********##########################################################################################################################################################################################################################************###########################################################################################################################################################################################################################################****************************************#########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################*****+++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================================+++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::.+###:::::::::::::::::.-%+::.::::%%%%%%##################:.-##%%%%%%%%%%%%*...  #@@@@@%%%%%%%%%@@@@@@@@%######********************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%*++********%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################*******************************#*#**++**####*++++++++++++++++++++++++++++**###########################***++++++*********************++++++**+++++++++++++++++++++++++++++++**#*####***#*++++++++++++++++++++++++++*****************#*******************++++++++++++++-.......=#**##**#**#********#*+++++++++++++++++++++++++++++++++++++++************+***###**#**##########*******+++++++++++++++++++++++++*************######################################*******+++:.....:====------==---=====================+++++++++++++++++++++++++++++****************************+**+================================================================-:-=========++++++************************************************************************************##################*****++++++++++**************************************************************************************************************************************************+*######*+*+++++++++++++++#############**#++++++++++++++++++++++++++###########%%%%%#######********+++++++*********++++++++++++++++++*#########################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%#######################################################################################%%%%#######%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*+++********##########################################################################################################################################################################################################################************###########################################################################################################################################################################################################################################****************************************#########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################*****+++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================+++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::::::####:::::::::::::::.::*%::::::::%%%%%##################+::*%%#%%%%%%%%%%%-...  %@@@@%%%%%%%%%%@@@@@@@@%######*******************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%*+++*******#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%#####################################################################################################*********************************#*++++*####*+++++++++++++++++++++++++++++++**###%#############**########**+++++********************+++++++*++++++++++++++++++++++++++++++++*#*####*#*##*+++++++++++++++++++++++++*****************#*********************++++++++*+++=........=****#**#*#*##***#**++++++++++++++++++++++++++++++++++++++++*****#*****+***####**#*###########*##****++++++++++++++++++++++++*************#######################################*******+++=......-====------==---=====================++++++++++++++++++++++++++++********************************+===============================================================-:-=========++++++************************************************************************************##################*****++++++++++**************************************************************************************************************************************************+*#####*++*++++*+++++++++#%##%%%####%#**##+++++++++++++++++++++++++*##########%%%%########*****++++++++++++********++++++++++++++++++#########################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#*++++*******##########################################################################################################################################################################################################################************############################################################################################################################################################################################################################################****************************************########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################*****+++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================================+++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::::::###*:::::::::::::::::.##:::::::=%%%%%##################-.-#%%%%%%%%%%%%%#:...  %@@@@@%%%%%%%%%@@@@@@@@%#######******************@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%*+++********%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%#####################################################################################################*********************************#*++++*#####*+++++++++++++++++++++++++++++++++**####%####################****++*******************+++++++++++++++++++++++++++++++++++++++++*######*#**#*++++++++++++++++++++++++++***************************************+++++++++++=.........-*#**#*##**###*##**+++++++++++++++++++++++++++++++++++++++*****#*****++**#*#####################**+++++++++++++++++++++++***************########################################********+++:......====--=----==---=====================++++++++++++++++++++++++++++********************************+========================================-======================--=========+++++*************************************************************************************##################*****++++++++++*************************************************************************************************************************************************+*#####*+*++*++++++++++++*%%%%%%%%%%%#**#%*+++++++++++++++++++++++++*#####################****+++++++++++++++******++++++++++++++++++*#######################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##+++++******###########################################################################################################################################################################################################################************############################################################################################################################################################################################################################################****************************************########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################*****+++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================+++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::=###=::::::::::::::::.:%*:::::::+%%%%%##################:.+%%#%%%%%%%%%%%=......%@@@@%%%%%%%%%%@@@@@@@@%#######*****************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%++++********#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%######################################################################################################************************************++++*####*+++++++++++++++++++++++++++++++++++***#####%####**########*####**********************+++++++++++++++++++++++++++++++++++++++++**#*#*#*#**##*++++++++++++++++++++++++++***************************************+++++++++++..........:*#*#*#*#*##*##***+++++++++++++++++++++++++++++++++++++++***********+**#######################***+++++++++++++++++++++++**************##########################################*******+++=......-====-=-----=---======================++++++++++++++++++++++++++++******************************+*+=======================================--=====================--=========++++*************************************************************************************###################******++++++++++***********************************************************************************************************************************************+**#####*+*++*+++++++++++*%%%%%%%%%%%%***##**+++++++++++++++++++++++*######################***++++++++*+++=+++*****+++++++++++++++++++#######################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#*+++++*****###########################################################################################################################################################################################################################*************##############################################################################################################################################################################################################################################**************************************########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================================================================+++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::::.####::::::::::::::::::=%-.::::::*%%%%%#################*.:#%#%%%%%%%%%%%#:.....:@@@@@%%%%%%%%%%@@@@@@@@%#######*****************@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%#+++++********%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%#####################################################################################################*************************************++++*####*++++++++++++++++++++++++++++++++++++++****##############*##*######*******************++++++++++++++++++++++++++++++++++++++++++*#*#*#**#**#*+++++++++++++++++++++++++++**************************************+++++++++++...........-*##*#*#*#**##**+++++*+++++++++++++++++++++++++++++++++***#*******+***######################***+++++++++++++++++**+++++**************##########################################********+++-....::-=======---==---=====================++++++++++++++++++++++++++++*******************************+*+======================================--======================-=========++++************************************************************************************####################******++++++++++***********************************************************************************************************************************************+*#####*+*+*++++++++++++*%%%%%%%%%%%%#**#%#*++++++++++++++++++++++++*#####################****++++++****+++++++****+=++++++++++++++++*######################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%########################%##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##*+++++*****###########################################################################################################################################################################################################################*************##############################################################################################################################################################################################################################################**************************************########################################################################################################################################################
****************************************************************************************************************************########################################################################################################*****+++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================================================++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::####::::::::::::::::::#%::::::::#%%%%%#################=.+%%##%#%%%%%#%%+......=@@@@@%%%%%%%%%%@@@@@@@@@#######****************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%#+++++********#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%######################################################################################################**********************************#**++++*#####*++++++++++++++++++++++++++++++++++++++++****################**####******************++++++++++++++++++++++++++++++++++++++++++*#*###**#*****+++++++++++++++++++++++++++****************#*#**#*****************+++++*+++:...........+##*##*#*##***++++++++++++++++++++++++++++++++++++**+*****#*****+***######################***+++++++++++++++++***++++**************############################################*******+++=:...:::=======---===---=====================++++++++++++++++++++++++++++*********************************+=====================================-:======================--========+++*************************************************************************************####################******++++++++++**********************************************************************************************************************************************+**####**+++++++++++++++*#%%%%%%%%%%%#**#%%*+++++++++++++++++++++++++*####********#########****++++******++++++++*++++++++++++++++++++##################################################################################################################################################################################################################################################################################################################################################################################################%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##*++++++*****##########################################################################################################################################################################################################################**************###############################################################################################################################################################################################################################################*************************************########################################################################################################################################################
****************************************************************************************************************************########################################################################################################*****+++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++***###############***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================================================+++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::.-###*::::::::::::::::::##::::::::#%%%%%#################-:#####%%%%%%%%%%-:.....*@@@@@%%%%%%%%%%@@@@@@@@@#######****************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######****++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%*+++++*********%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%######################################################################################################**********************************#**++++*#####*+++++++++++++++++++++++++++++++++++++++++++******#####%%########********************+++++++++++++++++++++++++++++++++++++++++++*#*****#***#*++++++++++++++++++++++++++++**************************************+++++++++-...........:*####****###*+++++++++++++++++++++++++++++++++*++*++***##*****+***######################***++++++++++++++++**********************#############################################*******++++=...::--=============--======================++++++++++++++++++++++++++++******************************+**+====================================-:-===============================++*************************************************************************************#####################******++++++++++*********************************************************************************************************************************************++*####**++++++++++*+++++#%%%%%%%%%%%#***%%%*+++++++++++++++++++++++++***************########*************++++++=+++++++++++++++++++++*####################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%##########################%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##*++++++*****############################################################################################################################################################################################################################************################################################################################################################################################################################################################################################************************************########################################################################################################################################################
*****************************************************************************************************************************#######################################################################################################*****+++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++***###############***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::.=###+::::::::::::::::::%*:.::::::%%%%%%#################:=#####%%#%%%%%%*::.....#@@@@@@%%%%%%%%%@@@@@@@@@#######***************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######****+++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%*++++++********#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################**********************************#**+++++*####*+++++++++++++++++++++++++++++++++++++++++++++*******######%########********************++++++++++++++++++++++++++++++++++++++++*###*******#*++++++++++++++++++++++++++++***************************************++++++++=............*###**#**##**+++++++++++++++++++++++++++++++++*+*++****#*********######################***++++++++++++++++***********************#############################################********++++-.:::--======================================+++++++++++++++++++++++++++***************************+++**+*+===================================-:-=============================++++*************************************************************************************#####################******+++++++++++********************************************************************************************************************************************+**####**+++++++++++++++*%%%%%%%%%%%#***%%%#*+*++*++++++++++++++++++++******+++++*****########************++++++++++++++++++++++++++++#####################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%%%%%%%%%%%%%%#########################%#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##**+++++*****################################################################################################################################################################################################################################*#########################################################################################################################################################################################################################################################************************************#######################################################################################################################################################
*****************************************************************************************************************************#######################################################################################################*****+++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++***###############***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::::*###-::::::::::::::::.=%-::::::::%%%%%#################*:*########%#%%#%=.::...-%@@@@@@%%%%%%%%%@@@@@@@@@#######***************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####******++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%+++++++*********%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################*************************************+++++*#####++++++++++++++++++++++++++++++++++++++++++++++++*****#*#############**********************++++++++++++++++++++++++++++++++++++++*********#*#*++++++++++++++++++++++++++++***************************************++++++++............*#**###*#*#*+++++++++++++++++++++++++++++++++++**++**##*********######################***+****+++++++++++***********************##############################################********++++=::::--======================================++++++++++++++++++++++++++++*************************++++**+**+==================================-::-==========================+=++++*************************************************************************************#####################*******++++++++++*******************************************************************************************************************************************+**####**+++++++++++++++*%%%%%%%%%%%#***#%%%#++++++++++++++++++++++++++**+++++++++++****##########*********+++++++++++++++++++++++++++*#####################################################################################################################################################################################################################################################################################################################################################################%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%##########################%#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%####################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##*+++++******###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#######################################################################################################################################################
******************************************************************************************************************************#####################################################################################################******+++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**#################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++===========================================================================================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::::####::::::::::::::::::*%:::::::::%%%%%#################=-########%%#%%%#:::....=@@@@@@%%%%%%%%%%@@@@@@@@@#######***************%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####******++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%#++++++++********%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################*************************************++++++#####*++++++++++++++++++++++++++++++++++++++++++++++++++********##########**************************+++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++***************************************+++++++:...........*##*######***+++++++++++++++++++++++++++++++*****+**##*****+****####################**********+++++++++*************************###############################################********++++-::---====+================+++++=============++++++++++++++++++++++++++++************************+++++*****+=================================--:-==========================++++++************************************************************************************######################*******++++++++++***************************************************************************************************************************************#**++*####*+*+*++++++++++++*%%%%%%%%%%%%***#%%%%*++++++++++++++++++++++++++++++++++++++++****###########*******+++++++++++++++++++++++++++######################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%############################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##***+++******############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#######################################################################################################################################################
******************************************************************************************************************************#####################################################################################################******++++++++*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**#################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++=========================================================================================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::.=####::::::::::::::::::#%::::::::-%%%%%#################-+########%#%#%%+.::....+@@@@@@%%%%%%%%%%@@@@@@@@@#######**************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######******+++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%#++++++++*********%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################************************************#*++++++*####*+++++++++++++++++++++++++++++++++++++++++++++++++++++**********########****************************++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++*********************************+***+++++++:..........-*#######*#*+*+++++++++++++++++++++++++++++*****++**##******+**#####################***********++++++++*************************################################################********++++=::--===+=++=============++++++++=============+++++++++++++++++++++++++++***********************+++++++**+**+================================---:-=======================+++++++++***********************************************************************************######################********++++++++***************************************************************************************************************************************##**+**####**++*++++++++++++%%%%%%%%%%%%****%%%%#++++++++++++++++++++++++++++++++++++++++++****##########*******++++++++++++++++++++++++++*#####################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%#############################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%##***********###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%#%%########**********************************#######################################################################################################################################################
********************************************************************************************************************************###################################################################################################******++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++***##################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++======================================================================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::*###*:::::::::::::::::-%#::::::::+%%%%%################*-###########%#%#-::::...*@@@@@@@%%%%%%%%%@@@@@@@@@#######**************#@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*******+++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%*+++++++++*******#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################************************************#*++++++*####*+++++++++++++++++++++++++===++++++++===========+++++++++***********######*******************************++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++*++*************************+++***++++++-..........=*#*#*#*##**++++++++++++++++++++++++++++++*****+***##*********#####################***********+++++++**************************#################################################********+++++-:--===+++++===+++======+++++++++=============+++++++++++++++++++++++++++**********************++++++++***+*++==============================---:-=====================+++++++++++***********************************************************************************#####################**********+++++++***********************************************************************************************************************************#####***+*####*+*++++++++++++++#%%%%%%%%%%%****#%%##*+*++*++++++++++++++++++++++++===++++++++++****###########******+++++++++++=++++++++++++++#####################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%#############################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%###**********#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%#%%########**********************************#######################################################################################################################################################
********************************************************************************************************************************###################################################################################################******++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++***##################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++====================================================================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::-####*:::::::::::::::::-%*::::::::+%%%%%################*=##########%%#%*:::::...#@@@@@@%%%%%%%%%%@@@@@@@@@%######**************%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######******+++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%*+++++++++******#%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################**************************************+++++++*####*+++++++++++++++++++======================================++*************######*****************************++++++++++++++++++++++++*********+++=++++++++++++++++++++++++++++++++++************************++++**++++++-..........=##*#*####*++++++++++++++++++++++++++++++*********##******+**######################*********++++++++***************************##################################################********+++++---==++++++===+++++++===+++++++++============++++++++++++++++++++++++++++*********************++++++++******++=============================-----==================+==+++++++++++***********************************************************************************#####################***********++++**********************************************************************************************************************************########*+***###***+**+++++++++++#%%%%%%%%%%#****######*++++*+*++++++++++++++++++++===++======+++++***############*****+++++++++++++++++++++++++*#####################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%#############################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%####*********#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%#%##########**********************************######################################################################################################################################################
**********************************************************************************************************************************#################################################################################################******++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++***###################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++==================================================================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-:::::+####*:::::::::::::::::+%+::::::::*%%%%%################=*############%#=.:::.:..#@@@@@@%%%%%%%%%%@@@@@@@@@%#####***************@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######********+++*+++++++++++++++++++++++++#%%%%%%%%%%%%%%%++++++++++*****%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################*************************************#*+++++++*####*++++++++++++++++===================-=====================================+++**######*****************************+++++++++++++++=+++********+++====++++++++++++++++++++++++++++++++************************+++++++++++-..........-*##*##*#**++++++++++++++++++++++++++++**++**+***##*********######################*********++++++*****************************###################################################********+++++=:===+++++++++=+++++++++=++++++++=============+++++++++++++++++++++++++++*********************+++++++++******++============================------==================+++++++++++++***********************************************************************************#####################********************************************************************************************************************************************############*+*+*####**++++++++++++++#%%%%%%%%%%#****######**++++++++++++++++++++++++++=+==+====+++++++****############*****+++++++=+++++++++++++++++####################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%##############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%##########**********************************######################################################################################################################################################
************************************************************************************************************************************###############################################################################################******++++++++*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************++++++++++++================================================================================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::#####*:::::::::::::::::#%+::::::::#%%%%#################=###############:::::::..%@@@@@@%%%%%%%%%%@@@@@@@@@%####***************#@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**********+*+++++++++++++++++++++++++%%%%%%%%%%%%%%%#+++++++++++***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%####################################################################################################**************************************#*+++++++*####*++++++++++++++====================================================================++**********************************++++++++++++=+********+=========++========++++++++++++++++++++++*********************+++++++++++-. .........***#**#**++++++++++++++++++++++++++***+***+****##*********#######################*******************************************####################################################*********+++++--==+++++++++++++++++++=++++++++++===========++++++++++++++++++++++++++++********************+++++++++*******++===========================------================++++++++++++++++**********************************************************************************#####################*****************************************************************************************************************************************###############*+***###**++++++++*+++++*%%%%%%######***********+++++++++++++++++++++++++++=++=+++++++++++*****#############****+++++++=++++=+++++++++++*####################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%##############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%##########**********************************######################################################################################################################################################
**************************************************************************************************************************************#############################################################################################******+++++++**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************++++++++++++==============================================================================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::-#####+::::::::::::::::=%#+::::::::#%%%%#################=#############%+:::::::.:%@@@@@@%%%%%%%%%%%@@@@@@@@@####***************%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########************+++++++++++++++++++++++*%%%%%%%%%%%%%%%#+++++++++++**#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*******#############################################################################################################################************************************###*+++++++*####**++++++++++++=======================================---=--=================================+++*****************************+++++++=+********+=+++++=======================+++++++++++++++******************+++++++++++-.  . ......-***###**++++++++++++++++++++++++*******+*****#**********########################*******************************************#####################################################********+++++=-==+++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++*******************++++++++++********+===========================-----==============++++++++++++++++++*********************************************************************************######################***************************************************************************************************************************************##############%#*+++*###**++++++++++++++*#%#########***********+*++++++++++++++++++++++++++++++=+==+++++++*******############****++++++++++++++++++++++++#######################################################################################################################################################################################################################################################################################################################################################%%%%%%%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%##############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%##########**********************************######################################################################################################################################################
****************************************************************************************************************************************###########################################################################################*******++++++**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++++++++============================================================================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::+#####-::::::::::::::::+%%+::::::::#%%%%################**#############%-:::::::.:%@@@@@@%%%%%%%%%%%@@@@@@@@@####***************%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*************++++++++++++++++++++++#%%%%%%%%%%%%%%%*++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********************************############################################******#*****#####################################################************************************#*#*++++++++#####*+++++++++++====================================--====--============---==================---========+++*************************++++*******++=======++++================+==+++++++++++++++*****************+++++++++++-   .  ......=*#*#**++++++++++++++++++++++++*********+***#**********##########################*****************************************######################################################*********+++++===++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++******************++++++++++++***+**++==========================------==========+++++++++++++++++++++*********************************************************************************#####################*************************************************************************************************************************************##############%%%%****+*##**++++++++++++++*########**********+++++++++++++++++++++++++++++++++++=+=+=++++++*********#############****+++++++++++++=++++++++*##################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%###############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########**********************************######################################################################################################################################################
******************************************************************************************************************************************#########################################################################################*******+++++***********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######################********+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************++++++++++===========================================================================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::*#####:::::::::::::::::*#%=::::::::#%%%%################+##############*::::::::.-%@@@@@@%%%%%%%%%%%@@@@@@@@@%###**************#@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*************++++++++++++++++++++++%%%%%%%%%%%%%%%%+++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########****************************+++++++++++++++++++++*******#################*********+++++++++++++++++++++****###########################################*************************************#*#**+++++++*####*++++++++++=============================================-================------===================--=======+++*****************************++===========++==================+++++++++++++++*****************++++++++++=. .  . ......=**#**+++++++++++++++++++++++++******+***##**********###################################********************************#######################################################*********++++++==++++++++++++++++++++++++++++++++============+++++++++++++++++++++++++++******************++++++++++++*++**+**+==========================-----========++++++++++++++++++++++++********************************************************************************#####################***********************************************************************************************************************************##########%%%%%%%%%#**++*##**++++++++++++++**###************++++++++=++++++++++++++++++++++++++++++++++++++************############****++++++++++++=++++++++*################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########***********************************#####################################################################################################################################################
********************************************************************************************************************************************########################################################################################******+++++***********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**########################*******++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++==========================================================================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::######:::::::::::::::::*##-::::::::#%%%%################*#############%=::::::::.-@@@@@@@%%%%%%%%%%%@@@@@@@@@%###**************#@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*************++++++++++++++++++++*%%%%%%%%%%%%%%%#++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++========================++++++**#######################################***************************************##*+++++++*####*+++++++++==========================================----======================--------=========-=========--======++************************++++++++==========================+++++++++++++++****************+++++++++++-        .....:+**++*+++++++++++++++++++++++*******+*##**********####################################*******************************########################################################*********++++++==+++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++*****************++++++++++++*++******+===========================---==+=+=++++++++++++++++++++++++++********************************************************************************#####################*******************************************************************************************************************************###########%%%%%%%%%%%#*++++*#**+++++++++++++++*********+++****+++=======++++++++++++++++++++++++++++++++++++***************############***+++++++++++==++=+*+++*##########################################################################################################################################################################################*####################################################################################################################################################%%%%%%%%%%@%%%%%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%########***********************************#####################################################################################################################################################
**********************************************************************************************************************************************######################################################################################******+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########################*******+++++++++++++++++++++++++++++++++++++++++++++++++++***************************************++++++++========================================================================================%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::-#####*::::::::::::::::-###-::::::::#%%%################################:::::::::.=@@@@@@@%%%%%%%%%%%@@@@@@@@@%###**************%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*************++++++++++++++++++++#%%%%%%%%%%%%%%%#++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########****************************++++++++++++++++++++++++++++++======================================================+++*#####################################***************************************##*++++++++*###**++++++========================================================-=====================----==========----------========++**************************+++++======================+++++++++++++++****************++++++++++++-.   .   ......+++++++*+++++++++++++*************+*#***********######################################*****************************##########################################################*********++++++=++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++******************+++++++++++++********+============================-==+=++++++++++++++++++++++++++++*******************************************************************************#####################*****************************************************************************************************************************############%%%%%%%%%%%%%*+*+*+*#*+++++++++++++++***+*++++++++***+==========++++++++++++++++++++++++++++++++++*******************############*+++++++++++==+++=+*+*##############################################################################################################################################################################################################################################################################################################################################%%%%%%%%@@@@@@@@@@%%%%%%%%%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%#################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%#########**********************************#####################################################################################################################################################
***********************************************************************************************************************************************#####################################################################################******+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########################*****++++++++++++++++++++++++++++++++++++++++++++++++++******************************************++++++++======================================================================================%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::-#####+:::::::::::::::.=%##:::::::::#%%%##############################%*:::::::::.+@@@@@@@%%%%%%%%%%%@@@@@@@@@@###**************@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*************+++++++++++++++++++%%%%%%%%%%%%%%%%*+++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*****************+****+**+++++++++++++++++++++++++++++++=============================================================++*####################################**************************************##*++++++++*####*++++++===========================================================---------============================-====----=========+++***************************++++++++===========+==+++++++++++++++****************++++++++++++-        .....++++++***++++++++****************+*#***********#######################################*****************************##########################################################*********+++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++*****************+++++++++++++*********++=============================+=++++++++++++++++++++++++++++*******************************************************************************#####################**************************************************************************************************************************############%%%%%%%%%%%%%%%#*+*++***++++++++++++++++++++++++===+***+===========+++++++++++++++++++++++++++++++++**********************##########*++=++++++++++==+=+**###########*##################################################################################################################################################################################################################################################################################################################################%%%%%%%@@@@@@@@@@@@@@%%%%%%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%#################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%#%%%#########**********************************#####################################################################################################################################################
******************************************************************************************************************************************************************##################################################################******+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**############################*****++++++++++++++++++++++++++++++++++++++++++++++++*********************************************+++++++====================================================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::+#####=:::::::::::::::.+###:::::::::#%%%###############################-:::::::::.+@@@@@@@@%%%%%%%%%%@@@@@@@@@@##**************%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**************++++++++++++++++++*%%%%%%%%%%%%%%%%+++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*********************+++++++++++++++++++++++++++++++++++==================================================================+**#################################**************************************###*++++++++*##***++++++========================================================-===-==--------=---===================----------======================++**************************+++++++++++++++++++++++++++****************+++++++++++++-        .. =**++++**+++++++++*****************************########################################***************************############################################################********#*++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++++++++++++++****************+++++++++++++++******+**+============================+++++++++++++++++++++++++++++++*******************************************************************************###################***************************************************************************************#######*************************##############%%%%%%%%%%%%%%###*++**+**++++++++++++++*++++++======+***+============*+++++++++++++++++++++++++++++**************************##########*++++=++=+++==+==++*##########*****##############################################################################################################################################################################################################################################################################################################################%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%############################%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%##################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########**********************************#####################################################################################################################################################
********************************************************************************************************************************************************************************####################################################******+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**############################*******++++++++++++++++++++++++++++++++++++++++++++************************************************++++++++++================================================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::*#####-::::::::::::::::*###:::::::::#%%################################:::::::::::*@@@@@@@@%%%%%%%%%%@@@@@@@@@@#***************%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############**************+++++++++++++++++#%%%%%%%%%%%%%%%#+++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################*******************+++++++++++++++++++++++++++++++++++======================================================================+**###############################****************************************##*++++++++*###**++++++================================================+++++=====--=--===------------================----------================-------===========+++***********************************++++++****************+++++++++++++-         :+++++***+*++++++++****************************##########################################**************************############################################################**********++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++****************++++++++++++++++********++==================-=========++++++++++++++++++++++++++++++*******************************************************************************###################**************************************************************************************##########*****************##################%%%%%%%%%#########**++****+++++++++++++++++==========+***+============++++++++++++++++++++*++++++++******************************########*++++=+++++++++===++#########********##########################################################################################################################################################################*###############################################################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%############################%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%##################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########**********************************#####################################################################################################################################################
***********************************************************************************************************************************************************************************#################################################******+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############################**********+++++++++++++++++++++++++++++++++++++++****************************************************++++++++++=============================================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-::-######:::::::::::::::::*#%#:::::::::##################################+.::::::::::*@@@@@@@@%%%%%%%%%%@@@@@@@@@@#**************#@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############**************+++++++++++++++++#%%%%%%%%%%%%%%%*++++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################******************+++++++++++++++++++++++++++++++++==========================================================================++*#*##*#########################****************************************##*+++++++++*##***+++++===============================================+++++++++==-==--====-----------==--============----------=============-----=====-----------==========++++***********************************************+++++++++++++-        =*++*+***++++++++************+****************###########################################*************************##############################################################********#*++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++****************+++++++++++++++++*********+================--=========++++++++++++++++++++++++++++++*******************************************************************************###################*************************************************************************************###############*############################################*****++**+*++++++++++++++++============****=============+++++++++++++++++++++++++*+************************+++******#######*+++++++++++++=====+*########***********#####################################################################################################################################################################*****############################################################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%##############################%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
**********************************************************************************************************************************************************+++*************************##############################################******++*++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############################*******************++++++++++++++++++++++++++++*******************************************************++++++++++++==========================================================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::=######:::::::::::::::::##%#:::::::::##################################-:::::::::::#@@@@@@@@%%%%%%%%%%@@@@@@@@@@%**************%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+++++++++++++++*%%%%%%%%%%%%%%%%*+++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################********************++++++++++++++++++++++++++=================================================================================+*#############################****************************************##*+++++++++*###**+++++=============================================+++++++++++======-====-----========================--------================----===-================-==========+++*****************************************++++++++++**++-      -+++*++**++*++++++****************************#############################################***********************###############################################################**********+++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++***************++++++++++++++++++*********+===============--=======+++++++++++++++++++++++++++++++++******************************************************************************##################**************************************************************************************########################################################********+++*+++++++++++++++++++===========****==============++*+++++++++++++++++++++*************************+++++*******#######+++++++*+++=+=+=+=++########***************####********####################################################################################################################################################********###*###**********########################################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%###############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
*********************************************************************************************************************************************************+++++*******+++++++++++******************##################################******+**+***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################****************************++++++++++++++++***********************************************************+++++++++++=========================================================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---:+######:::::::::::::::::###*:::::::::#################################*::::::::::::#@@@@@@@@%%%%%%%%%%@@@@@@@@@@%*************#@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+++++++++++++++#%%%%%%%%%%%%%%%%+++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*********************++++++++++++++++++++++====================================================================================++*#*#########################*****************************************#**+++++++++*##***+++++==========================================++++++++=========-====-------==-------================--------========================---=============================++++***+********************************+++++++++++*++-    .+++++*+**++*++++++**********+***************################################################*********************################################################################*********#++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++****************+++++++++++++++++++********++=============--====++++++++++++++++++++++++++++++++++++******************************************************************************#################**************************************************************************************#####%%%%%#########################################********++++++++++++++++++++++++++++===========****+==============**+++++++++++++++++++++*#***********************++++++*******#######+++=+++*+++=+=+=+++=*######******************************################################################################################################################################################*****************************#####################################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
********************************************************************************************************************************************************++++++******+++++++++++++++*********************############################******+*************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################***********************************+++++++++*************************************************************++++++++++++======================================================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:-#######:::::::::::::::::###+:::::::::################################%=::::::::::::%@@@@@@@@%%%%%%%%%%@@@@@@@@@@@*************%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*************+++++++++++++++%%%%%%%%%%%%%%%%#++++++++*%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****************++++++++++++++++++++++++=======================================================================================+**********##################********************************************+++++++++**#***+++++=====================================+++++++++=================-----------------==--===============--===================--=================================---====================++***********************+++++++***++-.  =+++++++*++*+++++++*************************###################################################*****************###################################################################**********++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++***************++++++++++++++++++++******+**+============---===++++++++++++++++++++++++++++++++++++******************************************************************************################**************************************************************************************#####%%%%%%%%################################************+++++++++***+++++++++++++++++++==========****+==============+#*++++++++++++++++++++*###*********************+++++++********######+++=+==*+++++===++=++*#####********************************###########################################################################################################################################**********************************###################################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
*********************************************************************************************************************************************************+++++******++++++++++++++++++**+++++********************###################******+*************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################************************************+++++++*****************************************************************+++++++++++====================================================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:=######*:::::::::::::::::###=:::::::::#################################-::::::::::::%@@@@@@@@%%%%%%%%%%@@@@@@@@@@@************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+++++++++++++*%%%%%%%%%%%%%%%%*++++++++%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################*****************+++++++++++++++++++++==========================================================================================+**********################*********************************************++++++++++*#****++++================================++++++++++===========================---------------==========================================----------===========================--====================++*********************+++*+*++-.-++++++:-++++++++++++**********************#########################################################************####################################################################*********#++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++***************++++++++++++++++++++++***+***++===========---===+++++++++++++++++++++++++++++++++++++*****************************************************************************###############**************************************************************************************#####%%%%%%%%%%%%######################*************++++++++++++++++**+++++++++++++++++++=========****+==============++#*+++++++++++++++++++*###*********************++++++++********######*++=++=+++++++==+==+=+*###***********************************########################################################################################################################################************************************#################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%###############################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
*********************************************************************************************************************************************************++++******+++++++++++++++++++++++++++++++++****************################********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############################************************************++++++********************************************************************++++++++++================================================================+=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:+######*:::::::::::::::::###-.::::::::################################*:::::::::::::%@@@@@@@@%%%%%%%%%%@@@@@@@@@@@************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+++++++++++++#%%%%%%%%%%%%%%%%*+++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*****************++++++++++++++++++++============================================================================================+***********#############**********************************************++++++++++******++++=========================+++++++++++==================================-------------======================================--=========-====================================================-======++*********************++=++++++=..+++++++++++++********************############################################################*****#########################################################################*********#*++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++**************++++++++++++++++++++++*********+==========---===+++++++++++++++++++++++++++++++++++++***************************************************************************#*###############*************************************************************************************#####%%%%%%%%%%%%%%###############************+++++++++++++++++++*+*++++++++++++++++++++++=======+****++==+=++=++++++++*#++++++++++++++++++++####*******************+++++++++++*******######*++=+++++++==+++==+==+*###*************************************#####################################################################################################################################*************************************################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%#############################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
************************************************************************************************************************************************************+******+++++++++++++++++++++++++++++++++++++++***********##############*********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############################************************************+++++***********************************************************************++++++++++============================================================+==+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---*######*:::::::::::::::.-###::::::::::################################=:::::::::::::%@@@@@@@@%%%%%%%%%%%@@@@@@@@@@%**********#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************++++++++++++%%%%%%%%%%%%%%%%#+++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****************+++++++++++++++++++==============================================================================================+************############********************************************#*+++++++++*#**#*++++==============++++++++++++++==============================================--------==============================================================================================================-===++*********************++++=.  -+++++++++++*+*****************#############################################################################################################################################*********#+++++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++**************++++++++++++++++++++++++*********+========---===+++++++++++++++++++++++++++++++++++++****************************************************************************###############*********************************************************************************##########%%%%%%%%%%%#############*********++++++++++++++++++++++++++*++*++++++++++++++++++++++======++***++++++++++++++++++**+++++++++++++++++++*###*******************+++++++++++********######*+++++=++++++++++++==++*##***************************************###################################################################################################################################**************************************##############################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%##%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#%%%%%##########################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%#####################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
************************************************************************************************************************************************************+******+++++++++++++++++++++++++++++++++++++++++++********#############*********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############################************************************+++++*************************************************************************+++++++++++++==========================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---#######*::::::::::::::::=###::::::::::################################:.::::::::::::%@@@@@@@@%%%%%%%%%%%@@@@@@@@@@%**********%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+++++++++++*%%%%%%%%%%%%%%%%*++++++*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****************++++++++++++++++++===============================================================================================++*************#########*********************************************#*++++++++++*****+++++=====+++++++++++++++========================================================-------===============================================================================================================-====+++******************++.   .++++++++++++****************###############################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++*************+++++++++++++++++++++++++*********+=======----==++++++++++++++++++++++++++++++++++++++***************************************************************************##############**************************************************************************###################%%%%%%%##########**********+++++++++++++++++++++++++++++**++**++++++++++++++++++++++++++=++****++++++++++++++++++**++++++++++++++++++**##*******************++++++++++++********#######++++++++++++++++++==+++*******************************************###############################################################################################################################****************************************##############################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%#########################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%#####################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
******************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++*****#############*********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############################************************************+++++****************************************************************************++++++++++++=======================================================++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---#######+::::::::::::::::+###::::::::::###############################*::::::::::::::%@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@*********#@@@@@@@@@@@@@%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+++++++++++#%%%%%%%%%%%%%%%%*+++++*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*****************++++++++++++++++=================================================================================================+****************#####************************************************++++++++++******+++++===+++++++++++++===============================================================---=========================================================================================================================++***************-     -++++++++**++**************#################################################################################################################################################**********++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++*************+++++++++++++++++++++++++++********+======----===+++++++++++++++++++++++++++++++++++++*+*************************************************************************##########**************************************************************************###################################*********+++++++++======+++++++++************++**++++++++++++++++++++++++++++*****+++++++++++++++++++*++++++++++++++++++++*#*******************++++++++++++*********#######++++++++++++++++++=====********************************************#############################################################################################################################*****************************************#############################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%########################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%#####################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%########***********************************####################################################################################################################################################
******************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++****############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################************************************++++********************************************************************************+++++++++++++====================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--=#######=::::::::::::::::*###::::::::::###############################=:::::::::::::-%@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@#********%@@@@@@@@@@@@@%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############**************+++++++++*%%%%%%%%%%%%%%%%#++++++%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*****************++++++++++++++++==================================================================================================+******************#*************************************************++++++++++*#****+++++===+++++++=======================================================================--============================================================================================================================++***********-     :++++++++++**************###################################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++============+++++++++++++++++++++++**************++++++++++++++++++++++++++++*******+=====----===+++++++++++++++++++++++++++++++++++++*+*************************************************************************########************************************************************************##################################********++++++++++==========+++++++**************++*+++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++***+*****************+**++*****************#######++=+++++++++++++++=====+**********************************************########################################################################################################################*******************************************#############################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%######################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%#####################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%########************************************###################################################################################################################################################
******************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++****############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################************************************++++***********************************************************************************+++++++++++===================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--+#######-::::::::::::::::*###::::::::::##############################*:::.::::::::::-%@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@#********@@@@@@@@@@@@@@%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############***************++++++++#%%%%%%%%%%%%%%%%#+++++#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****************+++++++++++++++====================================================================================================++******************************************************************++++++++++******++++++=================================================================================--==============================================================================================================================++*********=::-=+**+++++++++***********#####################################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++=============+++++++++++++++++++++++*************+++++++++++++++++++++++++++++********+===-----===++++++++++++++++++++++++++++++++++++++*************************************************************************###***********************************************************************##################################**********++++++++================+++++*************#*+++++++++++++++++++++++++*************+++++++++++++++++++*++++++++++++++++++++*++*****************++********************########*+=++=++++++====+=====+=+**********************************************#####################################################################################################################*********************************************############################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%###############################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%%###################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%######************************************###################################################################################################################################################
*****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++****############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################************************************++++*************************************************************************************++++++++++++================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--*#######:::::::::::::::::####::::::::::##############################+::::::::::::::=%@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@%*******#@@@@@@@@@@@@@%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############***************++++++++#%%%%%%%%%%%%%%%%*++++#%@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****************+++++++++++++++=====================================================================================================++*****************************************************************+++++++++++*#****+++++============================================================================================================================================================================================================-========++*****##*****#**++++++++********#######################################################################################################################################################************++++++++++++++++++++++++++++++++++++++++++++=============++++++++++++++++++++++*************++++++++++++++++++++++++++++++********+=------===++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************################################************+++++++++===================+++********########*+++++++++++++++++++++++++*********************+++++++++++**+++++++++++++++++++++**##******************+******************########*++++=+++++==============*#**********************************************#################################################################################################################***********************************************############################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%##%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%%###################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%#####************************************###################################################################################################################################################
*****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++****############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################************************************+++****************************************************************************************+++++++++++++++===========================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--#######*:::::::::::::::::####::::::::::##############################-::::::::::::::=%@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@*******%@@@@@@@@@@@@@%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################***************++++++*%%%%%%%%%%%%%%%%#++++*%@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****************++++++++++++++======================================================================================================++****************************************************************+++++++++++******++++===============================================================================================================================================================================================================================-:. .=*##****+++******##########################################################################################################################################################***********+++++++++++++++++++++++++++++++++++++++++++++=============+++++++++++++++++++++**************++++++++++++++++++++++++++++++*******++==-----===+++++++++++++++++++++++++++++++++++++*******************************************************************************##*********************************************************###############################**********++++++++++++++====================+++*****############*+++++++++++++++++++++++++*********************************+++++++++++++++++++++*####************************************#########*+++++++++===============+**#*********************************************##############################################################################################################*************************************************###########################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%%%%%%%%%#########################%##%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%%##################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%#####************************************###################################################################################################################################################
*****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++****############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################***********************************+++*******************************************************************************************++++++++++++++=========================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--#######*:::::::::::::::::####::::::::::#############################*:::::::::::::::=%@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@#*****#@@@@@@@@@@@@@@%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################**************++++++#%%%%%%%%%%%%%%%%#+++*%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****************+++++++++++++========================================================================================================+*******************+********************************************+++++++++++******++++++===================================================================================================================================================-=====================================================================-====-:..-==+**##*******############################################################################################################################################################************++++++++++++++++++++++++++++++++++++++++++++=============++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++*******=-----===++++++++++++++++++++++++++++++++++++*******************************************************************************###******************************************************############################**********+++++++++++++++++++====================+++****#############*+++++++++++++++++++++++++*****##***************************+++++++++++++++++++++####*************************************#########*=++++++++====+===========+#*###*******************************************###########################################################################################################***************************************************###########################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%%%%%%%#%#########################%##%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%%########################################################################################################################################################################################################################%########################################%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
******************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++****#############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############################***********************************+++***********************************************************************************************+++++++++++========================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--#######*:::::::::::::::::####::::::::::#############################+:::::::::::::::+%%@%@@@@@%%%%%%%%%%%%%@@@@@@@@@@%*****%@@@@@@@@@@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***************+++++%%%%%%%%%%%%%%%%%*++*%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***************+++++++++++++=========================================================================================================++*****************+********************************************++++++++++++*****++++++========================================================================================------------------------------------==============================================================================================================+**#################################################################################################################################################################***********+++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++++++++++**************++++++++++++++++++++++++++++++++********+---====+++++++++++++++++++++++++++++++++++++*++**+***************************************************************************#*************************************************##########################**********++++++++++++++++++++++++++++================++****##############*+++++++++++++++++++++++++*****##*****######*****************+++++++++++++*++++++*####*************************************#########*++++==+++===+=============*##*##**#******************************************#####################################################################################################******************************************************##########################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#################%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%#######################################################################################################################################################################################################################%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
******************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++****#############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################****************************************************************************************************************************************+++++++++++======================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-=#######*:::::::::::::::::####::::::::::#############################-:::::::::::::::+%%%%@@@@@%%%%%%%%%%%%%@@@@@@@@@@@*****@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***************+++++#%%%%%%%%%%%%%%%#+++%@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################**************+++++++++++++==========================================================================================================++****************++*******************************************++++++++++++*****++++==========================================================================================------------------------------------==================================================================================================================+**********#####################################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++++=============++++++++++++++++++++**************++++++++++++++++++++++++++++++++++*******+=--===+++++++++++++++++++++++++++++++++++++++++*+**************************************************************************************************************************#######################***********++++++++++++++++++++++++++++++++++++============+++****##############++++++++++++++++++++++++++****##*****############************+++++++++++++++++++*#####*************************************########*+++=+==+++================++*#####********************************************###################################################################################################********************************************************##########################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########%#%###%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%%%%%################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################%%%#######################################################################################################################################################################################################################%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
********************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++*****#############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################*******************************************************************************************************************************************+++++++++++===================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-=#######*:::::::::::::::::####::::::::::############################*::::::::::::::::+%%%%@@@@@%%%%%%%%%%%%%%@@@@@@@@@@#***#@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################***************++++*%%%%%%%%%%%%%%%#++#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################**************+++++++++++++===========================================================================================================++***************+++******************************+***********++++++++++++******++==========================================================================================-------------------------------------================================================================================================-===================++++++++***###################################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++*******+=--===+++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************######################***********++++++++++=========++++++++++*******++++++++++=======+++***###############*+++++++++++++++++++++++++*#####*****#################********+++++++++++++++++++*#####*************************************########*+++=+===+===================*######*********************************************##############################################################################################***********************************************************#########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%######%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%%%###########################%####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################%%%#######################################################################################################################################################################################################################%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
**********************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++*****##############**********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################*********************************************************************************************************************************************+++++++++++=================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-*#######+:::::::::::::::::####::::::::::############################+::::::::::::::::+%%%%@@@@@%%%%%%%%%%%%%%@@@@@@@@@@%***%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***************+++*#%%%%%%%%%%%%%%*+#@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################***************++++++++++++============================================================================================================++**************+++******************************+************+++++++++++******++===================================================================================--====--------------------------------------=====================================================================================================================+++++++*######################################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++++==============+++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++*******+====++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************############****************+++++++++++==============+++++++*****************+++++++++++++***###############*+++++++++++++++++++++++++*#####*****########################*+++++++++++++++++++*#####**************************************########*++==+===================+===+*#######********************************************#############################################################################################***********************************************************#########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%###########################%####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################%%%#######################################################################################################################################################################################################################%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++*****###############**********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################************************************************************************************************************************************************+++++++++++==============================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===*#######+:::::::::::::::::####::::::::::############################-::::::::::::::::+%%%%@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@#**@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################**************++++#%%%%%%%%%%%%%#+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################**************++++++++++++=============================================================================================================+++*************++*****+*************************************++++++++++++*****++===============================================================================--------=---------------------------------------====================================================================================================================++++=+++++++**#################################################################################################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++=============++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++*******+===++++++++++++++++++++++++++++++++++++++++++++*+++********************************************************************************************************####***********************++++++++++++==================++++++**********************+++++++++****##############*+++++++++++++++++++++++++*#####*****#########################*+++++++++++++++++++*#####**************************************########*++==+======================+=+#######**********************************************########################################################################################**************************************************************#######################################********##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%############################%##%##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################%%%######################################################################################################################################################################################################################%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++******###############**********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################**************************************************************************************************************************************************++++++++++++===========================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===########+:::::::::::::::::####::::::::::############################:::::::::::::::::+%%%%@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@%*#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################****************++*#%%%%%%%%%%%%**%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################**************+++++++++++++=============================================================================================================+++************+++****++************************************++++++++++++*****+==============================================================================--------------------------------------------------==================================================================================================+**+================++++++++++++++**#############################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++++++=============+++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++********+==++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************######******************++++++++++++=======================+++++***********#####***********++++*****##############*+++++++++++++++++++++++++*#####*****##########################*+++++++++++++++++++*#####**************************************########*++=====================+==+==+*########**********************************************#####################################################################################*****************************************************************#################################***************######################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%############################%##%##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################%%%######################################################################################################################################################################################################################%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
************************************************************************************************************************************************************************++++++++*++++++++++++++++++++++++++++*******###############**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############################****************************************************************************************************************************************************+++++++++++++=========================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+########*:::::::::::::::::####::::::::::###########################+:::::::::::::::::+%%%%@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@#%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################**************#*++#%%%%%%%%%%%%*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################***************++++++++++++==============================================================================================================+++***********+++****+++******+***************++***********++++++++++++*****++==========================================================================-----------------------------------------------------======================================================================================================++++===========+++++++++++++++==++**##########################################################################################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++==============+++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************#######*************++++++++++++============================++++******##################*************##############*++++++++++++++++++++++++++#####*****##########################*+++++++++++++++++++*#####***************************************#######*++=+====================+==+=+=+*########************************************************#########################################################################*###**********************************************************************###########################*********************######################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%################################%##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################%%%######################################################################################################################################################################################################################%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
**********************************************************************************************************************************************************************************++**++**+++++++++++++++++++*******###############**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############################*****************************************************************************************************************************************************++++++++++++++=======================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*########*:::::::::::::::::####::::::::::###########################-:::::::::::::::::+%%%%@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################************#%%#*#%%%%%%%%%%%#%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***************+++++++++++++==============================================================================================================+++***********++****+++******+**************+++***********+++++++++++++****++========================================================================-------=-----------------------------------------------==========================================================================================================++++=======+++++++++++++++++++++++****####################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************#######********+++++++++++==================================+++******#######################*********##############*++++++++++++++++++++++++++*####*****###########################*+++++++++++++++++++*#####***************************************#######*++=+============================*#####****************************************************#####################################################################*#****************************************************************************######################************************#######################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%################################%##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################%%%######################################################################################################################################################################################################################%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
****************************************************************************************************************************************************************************************++++++++++++++++++++************##########***********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###########################******************************************************************************************************************************************************+++++++++++++++=====================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===*########*:::::::::::::::::####::::::::::###########################::::::::::::::::::+%%%%@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################***********%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################***************+++++++++++++===============================================================================================================+++**********++*****++******++*******++*+++++++**********+++++++++++++*****+=======================================================================---------------------------------------------------===========================================================================================================================+++++++++++++++++++++++++++++*#################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++++++=============++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++*++++++++++*****+****+*************************************************************************************######*****+++++++++=======================================+++*****############################****################++++++++++++++++++++++++++*####*****############################*+++++++++++++++*++*######*****************************************#####*+++++=+=========================+##*####****************************************************###################################################################******************************************************************************################*******************************#####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%####################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#######################################################################################################################################################################################################################%%%%%####################################################################################################################################################################################################################%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
****************************************************************************************************************************************************************************************++++++++++++++++++++**********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###########################*****************************************************************************************************************************************************++++++++++++++++++===================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===*########*:::::::::::::::::####::::::::::*#########################+::::::::::::::::::+%%%%@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################**********#%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****************+++++++++++++==============================================================================================================++++**********+*****++******++*******++++++++++**********+++++++++++++*****+=======================================================================--------------------------------------------------=========================================================================================================================++++++++++++++++++++++++++++++++++*###############################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++++++==============+++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++**++++++++++***********************************************************************************************#####*****++++===========================================++++*****################################################*++++++++++++++++++++++++++####*****#############################*++++++++++++++++++*###*###****************************************#####*++==============================+*######*****************************************************#################################################################*********************************************************************************########*************************************#####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%####################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################%%%%%####################################################################################################################################################################################################################%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
**************************************************************************************************************************************************************************************************++++++++************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########################***************************************************************************************************************************************************+++++++++++++++++++++++=================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===#########+:::::::::::::::::####::::::::::*####*####################=::::::::::::::::::+%%%@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################********#%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***************++++++++++++++==============================================================================================================++++*********++****+++******+******+++++++++++**********++++++++++++++****+======================================================================-----------------------------------------------=====================================================================================================================++***#############***********++++++++++++++*##############################################################################################################################***********+++++++++====+++++++++++++++++++++++++++++++++++++============++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++*****##*++++++++++++++++++++++++++++++++++*++++++++***************************#########**************************************************************###*****+++===========================================+++++****#################################################*++++++++++++++++++++++++++*###******############################*+++++++++++++++++++*##**######*************************************#####*+================================+######*****************************************************#################################################################******************************************************************************************************************************#####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%###################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################%%%%%%####################################################################################################################################################################################################################%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####**************************************#################################################################################################################################################
*******************************************************************************************************************************************************************************************************++***************************************++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#########################**************************************************************************************************************************************************+++++++++++++++++++++++++++===============#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===#########=:::::::::::::::::####::::::::::*####*#*##################:::::::::::::::::::+%%%@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***************++++++++++++++++=============================================================================================================++++*********+****+++******+******+++++++++++**********++++++++++++++****++=====================================================================----------------------------===--------------==================================================================================================================++***########################%%%%%######**++=++++#%#############################################################################################################################***********++++++++====+++++++++++++++++++++++++++++++++++++=============+++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++*****##**++++++++++++++++++++++++++++++++*++****************************##############*********************************************************************+++========================================+++++++******################################################*++++++++++++++++++++++++++*####*****#############################*+++++++++++++++++++***+*##########**********************************####*+================================+*##*##******************************************************###############################################################*******************************************************************************************************************************#####################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%####################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################%%%%%%####################################################################################################################################################################################################################%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####**************************************#################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***########################*********************************************************************************************************************************************+++++++++++++++++++++++++++++++++==============#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===#########-:::::::::::::::::####-:::::::::+####*#*#################*:::::::::::::::::::+%%%@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****************++++++++++++++++=============================================================================================================++++********+****+=+******+******+++++++++++**********++++++++++++++****++=====================================================================---------------------------======------==----======================================================================-=================================++*********#***####################%%#######%%%%%%%%%##**+++##%%##########################################################################################################################***********+++++++++=====+++++++++++++++++++++++++++++++++++==============+++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++****####*+++++++++++++++++++++++++++++++*************************####################*********************************************************************+++====================================+++++++++******##################################################*+++++++++++++++++++++++++*####*****##############################*+++++++++++++++++*+*++*###############*******************************###*+=================================+##**#********************************************************############################################################*******************************************************************************************************************************#####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%##################################%%%%%%%%%%%%%#####################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################%%%%%%####################################################################################################################################################################################################################%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####**************************************#################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************++++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#######################**********************************************************************************************************************************************+++++++++++++++++++++++++++++++++++============#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+#########-:::::::::::::::::*###-:::::::::=####*###################+:::::::::::::::::::+%%%@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################*#**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****************+++++++++++++++++============================================================================================================+++++*******+****+=+******+******++++++++++++*********+++++++++++++++***++=====================================================================---------------------------======-----===--=================================================================================+****************************#********####################################%%%#%%%%###+*##%%%#######################################################################################################################************++++++++======+++++++++++++++++++++++++++++++++++==============+++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++***#####**+++++++++++++++++++++++++++++*******************##########################*********************************************************************++==================================+++++++++********##################################################*++++++++++++++++++++++++++*###*****##############################*+++++++++++++++++++++++*##################*****************************##*+=================================+*##*#*********************************************************###########################################################******************************************************************************************************************************######################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%###################################%%%%%%%%%%%%%#####################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################%%%%%%%###################################################################################################################################################################################################################%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####**************************************#################################################################################################################################################
****************************************************************************************************************************************************************************************************************************************++++++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***######################************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++===========#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+#########::::::::::::::::::*###=:::::::::-####**##################=:::::::::::::::::::+%%%@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****************++++++++++++++++++============================================================================================================++++++*****+****+=++*****++*****++++++++++++*********+++++++++++++++****+=====================================================================---------=--------------=-=======-----=================================================================================++**###*######****************************#############################%%%##%%%####%%%%%#%######%%%%%###################################################################################################################************++++++++=======+++++++++++++++++++++++++++++++++++=============+++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++***######*+*+++++++++++++++++++++++++++***********###############################***********************************************************************++===============================+++++++**********####################################################*++++++++++++++++++++++++++*###*****###############################*+++++++++++++++++++++++*#######################************************##*+==================================*####**********************************************************#########################################################******************************************************************************************************************************#######################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%#####################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################%%%%%%%###################################################################################################################################################################################################################%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####**************************************#################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************+++++++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#####%################************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+#######**::::::::::::::::::*###=::::::::::##*#**#**###############-:::::::::::::::::::+%%%@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################*****************+++++++++++++++++=============================================================================================================++++++*********++++*****++*****++++++++++++**********++++++++++++++****+=====================================================================---------==-------------=-=======----===============================================================================+*****#************************************##################################%#######%##%##%%%######%#%%%%%#################################################################################################################************++++++++======+++++++++++++++++++++++++++++++++++=============+++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++*#######**+++++++++++++++++++++++++++*****####################################************************************************************************+++=============================++++++***********#####################################################++++++++++++++++++++++++++*###*****################################*++++++++++++++++++++++*##########################**********************##*===================================+#*##**********************************************************#########################################################****************************************************************************************************************************########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%%%%%%####################################%#%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################%%%%%%%###################################################################################################################################################################################################################%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####***************************************################################################################################################################################################
*******************************************************************************************************************************************************************************************************++******************************+++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%##%#########*************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=====+====#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*########*::::::::::::::::::+###+::::::::::###**#*****############*::::::::::::::::::::+%%@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****************++++++++++++++++++=============================================================================================================+++++**********+=+*****++******+++++++++++**********+++++++++++++++**+*+============+==========================================================---========-----------=======-----====================================-=====================================++*******************************************########################*++**##############%%#%%##%##################%%#############################################################################################################************++++++++=-===+++++++++++++++++++++++++++++++++++++=============++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++**#######*++++++++++++++++++++++++++*######################################**************************************************************************+++===========================+++++**********########################################################*++++++++++++++++++++++++++*##*****################################*+++++++++++++++++++++++*###############################*****************##*+===================================*###*********************************************************#########################################################*****************************************************************************************************************************########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%%###################################%#%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################%%%%%%%###################################################################################################################################################################################################################%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####***************************************################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************+++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################**************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*#######**::::::::::::::::::+###*::::::::::##*********############+::::::::::::::::::::+%%@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################****************++++++++++++++++++==============================================================================================================+++++*********+=+*****++******+++++++++++**********+++++++++++++++****+============+==========================================================--===========---------=======-==----====================================================================++*********************************************##############################**++**######%%###%###%###################%%%############################################################################################################*************++++++++===++++++++++++++++++++++++++++++++++++++=============++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++**#######*+++++++++++++++++++++++++*####################################****************************************************************************+++=========================++++++*******###########################################################*++++++++++++++++++++++++++*##*****#################################*+++++++++++++++++++++++*##################################***************#*+===================================+*###********************************************************#########################################################***************************************************************************************************************************##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%%###################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################%%%%%%%###################################################################################################################################################################################################################%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####***************************************################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************+++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###################**************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++=========*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*#######**::::::::::::::::::+###*-:::::::::##**#******#####*######=::::::::::::::::::::=%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****************+++++++++++++++++===============================================================================================================+++++********++++****++******+++++++++++**********+++++++++++++++****+============+========================================================================--------======----------================================--============================++****************####*********************###########################################*+++++*######%%####%###################%%%%%########################################################################################################************++++++++=++++++++++++++++++++++++++++++++++++++++===============++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######*++++++++++++++++++++++++########%%%%####################********************************************************************************+++========================+++++******#############################################################*++++++++++++++++++++++++++*##*****##################################*++++++++++++++++++++++*###################################***************#*====================================+*#**#*******************************************************########################################################***************************************************************************************************************************###########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################%%%%%%%%%%%%%%###################################%%#%%%%%%@@@@@@@@@@@@@@@@@@%%%#%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################%%%%%%%###################################################################################################################################################################################################################%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####***************************************################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##################****************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=========*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*#######**::::::::::::::::::+####=:::::::::##**********####*######=::::::::::::::::::::=%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################****************+++++++++++++++++===============================================================================================================++++++********+++*****+******+++++++++++**********+++++++++++++++****+===========++========================================================================-------------------==============================================================++*****************###############*****#########################################################*+++++**###############################%%######################################################################################################*************++++++++++++***++++++++++++++++++++++++++++++++++==============++++++++++++++++++*******+++++++++++++++++++=++++++++++++++++++++++++++++++++**+**#######**++++++++++++++++++++++#%######%%###################***********************************************************************************++++=====================+++++******###############################################################+++++++++++++++++++++++++++##*****##################################*+++++++++++++++++++++++*###################################**************##*=====================================*#**********************************************************#######################################################**************************************************************************************************************************############################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################%%%%%%%%%%%%%%%#################################%##%#%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################%%%%%%%####################################################################################################################################################################################################################%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####***************************************################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************++++++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#################*****************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=======+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==########**::::::::::::::::::*####+:::::::::*#***#******####*#####*-::::::::::::::::::::-%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*****************++++++++++++++++================================================================================================================+++++********+++*****+******++++++++++++*********+++++++++++++++*****+==========++========================================================================----------------=-----======================================================++*************###########################################################################################***##################################%%%%#################################################################################################*************++++++++**********++++++++++++++++++++++++++++++++=============++++++++++++++++++********+++++++++++++++++===++++++++++++++++++++++++++++++++**++*########**++++++++++++++++++++*###################********************************************************************************************++++====================+++++******###############################################################*++++++++++++++++++++++++++##*****###################################*+++++++++++++++++++++++###################################***************##*=====================================+***********************************************************#######################################################*****#********#*********************************************************************************************************##############################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############%%%##%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%##################################%%%%%%%%%%%%%%%#################################%##%##%%%%%%@@@@@@@@@@@@@%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################%%%%%%%#############################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####***************************************################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************+++++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###############*******************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=====++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+########**-:::::::::::::::::*####*:::::::::*#***#*******#########*:::::::::::::::::::::-%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****************++++++++++++++++=================================================================================================================+++++*******++++****+******++++++++++++*********+++++++++++++++*****+==========++========================================================================---------------=-===============================================--======++***********##########################################################################################################%############################%%%%%%##############################################################################################**************+++++++***********++++++++++++++++++++++++++++++++===========+++++++++++++++++++*********+++++++++++++++======+++++++++++++++++++++++++++++++******####**###*+++++++++++++++++++#%#############************************************************************************************************++++===================+++++*****################################################################*++++++++++++++++++++++++++*#*****####################################*++++++++++++++++++++++*##################################***************###*+=====================================*##********************************************************######################################################**************######****************************************************************************************************##############################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%##################################%%%%%%%%%%%%%%%#################################%##%%#%%%%%%%%@@@@@@@@@@%%%%%%##%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################%%%%%%%#############################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%####****************************************################################################################################################################################################
****************************************************************************************************************************************************************************************************************************************++++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****############*********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++==+++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+#######***-:::::::::::::::::*####*:::::::::+#***********#########+::::::::::::::::::..::#%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################****************+++++++++++++++===================================================================================================================++++++******+++*****+*****++++++++++++*********++++++++++++++++****++=========+========================================================================---------===========================================================++***************##############################################################################################################################################%%#############################################################################################*************+++++++*######*****+++++++++++++++++++++++++++++++==============++++++++++++++++*********++++++++++++++=========++++++++++++++++++++++++++++**+*****###*++**##**++++++++++++++++*###########*****++++*******************************************************************************************++++================++++++*****################################################################*++++++++++++++++++++++++++*#*****####################################*+++++++++++++++++++++++*##################################***************###*+=====================================+**********************************************************#####################################################***********###########*************************************************************************************************################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%##################################%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%###########%%%%#%%%%%%%%%%%%%%%%%%%%###%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################%%%%%%%#############################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%####*****************************************###############################################################################################################################################
****************************************************************************************************************************************************************************************************************************************+++++++++**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#######************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=+++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+#######**#=:::::::::::::::::+####*::::::::.+#***********##*######+::::::::::::::::::...:#%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*****************++++++++++++++====================================================================================================================++++++*****+++*****+*****++++++++++++*********++++++++++++++++*****+++=======+=======================================================================------=========================================================+++***********####*#############################################################################################################################################%###################################################################################################**************+++++++#######*****++++++++++++++++++++++++++++++==============++++++++++++++++**********++++++++++++===========++++++++++++++++++++++++++++**+******##+++++**##*+++++++++++++++######*******++++++++******************************************************************************************++++==============+++++++*****################################################################*+++++++++++++++++++++++++++#*****#####################################*+++++++++++++++++++++++####################################*************####*+======================================**********************************************************#####################################################********#*############*************************************************************************************************#############################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%##################################%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%###########%%#%%%%%%%%%%%%%%%%%%%%%##%%%##############################%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################%%%%%%%############################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************###############################################################################################################################################
******************************************************************************************************************************************************************************************************************************************++++++***********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+#######*##=:::::::::::::::::+#####:::::::::-##**#*********#######=::::::::::::::::::  ::#%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***************+++++++++++++======================================================================================================================+++++*****+++***+*******++++++++++++*********++++++++++++++++*****+++=======+=========================================================================--=================-============================-===--===++**************########################################################################################################################################################################################################################################################**************+++++++########*****+++++++++++++++++++++++++++++===============++++++++++++++++*********++++++++++==============++++++++++++++++++++++++++++***********+++++++*****++++++++++++**********++++++++++++*****************************************************************************************++++========++++++++++++*****#################################################################*++++++++++++++++++++++++++#*****######################################*++++++++++++++++++++++*###################################**************####*+======================================+#*********************************************************###################################################*********##############**********************************************************************************************###########################################################%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%##%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################%%%%%%#############################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************###############################################################################################################################################
******************************************************************************************************************************************************************************************************************************************+++++************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+#######**#+:::::::::::::::::-#####-::::::::-#*************#######-::::::::::::::::::  .:*%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***************+++++++++++++======================================================================================================================+++++*****+++***********++++++++++++**********+++++++++++++++*****+++++=====+=======================================================================--=================--====================-====--=======+***************#############################################################################################################################################################################################################################################################**************++++++*%#######******++++++++++++++++++++++++++++==============+++++++++++++++++*********++++++++++===============++++++++++++++++++++++++++***********++++++++++++++++++++++++*****++++++++======++++****************************************************************************************+++++=====+++++++++++++*****#################################################################*++++++++++++++++++++++++++******######################################*+++++++++++++++++++++++*###################################*************#####*+======================================+**********************************************************##################################################***********#############*********************************************************************************************###########################################################%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################%%%%%%%%###########################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************###############################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************+++*************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*#######***+::::::::::::::::::#####=.::::::::#*************######*-::::::::::::::::::  .:*%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****************+++++++++++========================================================================================================================+++++****+++***********++++++++++++**********+++++++++++++++******+++++===++================================================================================+==============-=================---====++*****************################################################################################################################################################################################################################################################################**************++++++*%%######*******++++++*++++++*******+++++++===============++++++++++++++++**********++++++==+================+++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++=========++++****************************************************************************************+++++===++++++++++++++*****#################################################################*++++++++++++++++++++++++++******#######################################*++*++++++++++++++++++++####################################*************#####*+=======================================*#********************************************************##################################################************###########********************************************************************************************##########################################################%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################%%%%%%%%#########################%%%%%%%%%%%%%%%###############################################################################################################%%%%%%%%%%%######################################################################################################################################################################################################################%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************###############################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************++*********************************************+++++++++++++*++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************++++++++++*++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*######*****::::::::::::::::::#####+:::::::::##************######*::::::::::::::::::.  ::+%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****************+++++++++++=========================================================================================================================+++++***+++****++++++*+++++++++++++*********+++++++++++++++******+++++++=++=============================================================================+===========---=================--====+*********************######################################################################################################################################################################################%%%%########################################################################**************+++++++#%%%#####********++++**+***********++++++++==============++++++++++++++++**********+++++++===================++++++++++++++++++++++++**************++++++++++++++++++++++++++===============+++***************************************************************************************+++++++++++++++++++++++****#################################################################*++++++++++++++++++++++++++******########################################*++*+++++++++++++++++++*###################################*************#######+=======================================+**********************************************************################################################*************###########****************************************************************************************##########################################################%%%%%%%%%#%##%##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################%%%%%%%%%%%%%%%%########################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************###############################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************++********************************************++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************++++++++++**+++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*######*****::::::::::::::::::#####*:::::::::*#*************#####+::::::::::::::::::.  ::=%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************+++++++++++==========================================================================================================================++++****++****++++*+*+++++++++++++*********++++++++++++++++*****++++++++++==========================================================================++===-=---=====================-====+************************#################%%%%######################################################################################################################################################################%%%%%%###################################################################***************++++++*%%%%#####*********+++**************+++++++==============++++++++++++++++***********+++++++==================+++++++++++++++++++++++++***************++++++++++++++++++++++=================+++***************************************************************************************++++++++++++++++++++++*****#################################################################+++++++++++++++++++++++++++*****########################################*+++++++++++++++++++++++*###################################************########+========================================***********************************************************##############################################***************#########****************************************************************************************#########################################################%%%%%%%%%#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************###############################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************++++++++++*+++***++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*#####******::::::.:::::::::::*####*:::::::::*#*************#####+::::::::::::::::::.  ::-%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************++++++++++============================================================================================================================++++***++*****+++++*+++++++++++++*********++++++++++++++++******++++++++*=======================================================================+++=========================--====++**#************************#####################%%%%%%%%%%%%#############################################################################################################################################################%%%%%%%#################################################################**************+++++++%%%%%#####*********++************#**+++++++===============+++++++++++++++**********+++++++==================++*++++++++++++++++++++++*****************+++++++++++++++++++==================+++***************************************************************************************+++++++++++++++++++++*****#################################################################*++++++++++++++++++++++++++*****#########################################*+*++++++++++++++++++++*####################################************########+========================================+***********************************************************#############################################****************########*************************************************************************************###########################################################%%%%###############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************###############################################################################################################################################
************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************++++++++****+++*****+++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*####*******:::::::-::::::::::*#####::::::::.+#*************#####=::::::::::::::::::.  .::%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***************+++++++++=============================================================================================================================++++++++*****+++++++=+++++++++++*********++++++++++++++++******++++++++*====================================================================+++++========-======-==========++******************************###########################%%%%%%%%%%%%%#############################################################################################################################################################%%%%################################################################***************++++++#%%%%%#######*******++******########++++++++==============++++++++++++++++**********++++++==================+***+++++++++++++++++++++******************++++++++++++++++++==================+++***************************************************************************************+++++++++++++++++++++****#################################################################*++++++++++++++++++++++++++******#########################################*++++*+++++++++++++++++*###################################************#########+========================================+************************************************************###########################################******************######***********************************************************************************#################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################%%%%%%%%%@@@@@@@@%%%%%%%%####################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************++++++*****++++******++*+++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*####*******::::::-*::::::::::+#####:::::::::=#*************#*###=::::::::::::::::::.  .::#%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***************+++++++++===============================================================================================================================+++++++*****++++++===+++++++++*********++++++++++++++++******++++++++*=================================================================+++=========================++**#####*************************#####################################%%%%%%%%%%%%%%%#########################################################################################################################################################################################################################****************+++++*%%%%#%###########**++*#############*+++++++==============++++++++++++++++**********+++++++=================+*****++++++++++++++++++++*******************++++++++++++++++==================+++*************************************************************##************************++++++++++++++++++++*****################################################################*++++++++++++++++++++++++++*****##########################################*+++++++++++++++++++++++####################################************#########+=========================================************************************************************###########################################*******************##*##*********************************************************************************###################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%##############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################%%%%%%%@@@@@@@@@@@@@@@@%%%%%%##################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
****************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++**++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************+++++++++********+++******++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+####*******::::::*=::::::::::=#####=::::::::-##************#*##*-::::::::::::::::::.  .::*%%@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************+++++++++=================================================================================================================================+++++*****++*+++==+=+++++++++********+++++++++++++++++*****+++++++**+=====================================================================================++****####***************************#######################################+:-+*#%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################*****************+++++%%%%%%%%###########*++###########%##++++++++==============++++++++++++++++**********++++++=================******+++++++++++++++++++**********************+++++++++++++++================++++*********************++++++**********************************##************************++++++++++++++++++++****##############################################**################*++++++++++++++++++++++++++*****###########################################**+++++++++++++++++++++*####################################***********##########+=========================================+**************************************************************#######################################*******************************************************************************************************######################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%#################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
****************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++**++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+####*******:::::=#:::::::::::-#####+::::::::-####**********#*##*-::::::::::::::::::.   ::*%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***************+++++++===================================================================================================================================++++******+++++====+++++++++********+++++++++++++++********++++++**+==============================================================================+++***************************************#########################################*:..:::--+*##%%%%%%#%%%%##################################################################################################################################################################################################################*****************+++++#%%%%%%%%###########*+*########%#%%##+++++*+==============++++++++++++++++**********+++++++================++++++++++++++++++++++++++***********************+++++++++++++================++++********************+++++++++********************************#************************++++++++++++++++++++*****#############################################**#################++++++++++++++++++++++++++*****############################################*++++++++++++++++++++++*####################################***********##########+==========================================**************************************************************######################################*****************************************************************************************************########################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%###############################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
*****************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************++++*+++++++++++++**++++++++*+++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+####*******:::::**::::::::::::#####*:::::::::########********##*:::::::::::::::::::.   ..=%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***************++++++======================================================================================================================================+++*****++++++++==++++++++********+++++++++++++*****##***++++++**+++====================================================================+++++******************************************############################################*=:........:-==+**#%%%%%%%########################################################################################################################################################%%#######################################################*****************++++*%%%%%%%%%%%#########++#%%%%%#%%%%%%%*++++++==============+++++++++++++++++**********+++++++===============++++++=====+++++++++++++++*************************++++++++++++================+++*******************+++++++++++*******************************#************************+++++++++++++++++++*****#############################################**#################++++++++++++++++++++++++++******###########################################*+++++++++++++++++++++++#####################################**********###########+====+=====================================+**************************************************************#####################################*******************************************************************************##########*********###########################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##############################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************++++++++++++++++++++*++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+###********-.:::*+::::::::::::######:::::::::#########******#*#+:::::::::::::::::::.     :%@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################**************++++++======================================================================================================================================+++******++++++===++++++++********+++++++++++*******####*++++++**++++===========================================++++++++++++++++++++++++*****************************************###################################################*:...............:+#####%%################################################################################################################################################################################################################*****************+++++#%%%%%%%%%%%%%%%%%##*+*%#%%%%%%%%%%%#+++++*+==============++++++++++++++++**********+++++++===============++=====-----=+++++++++++++***************************++++++++++================++++*****************+++++++++++++*****************************##************************++++++++++++++++++******#############################################*#################*+++++++++++++++++++++++++*****#############################################*++++++++++++++++++++++*####################################***********###########++=========================================+***************************************************************###################################***************************************************************************###################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%#################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%#%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%############################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++*+***+++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==###********=::::*=::::::::::::*#####:::::::::##########*****#*#+:::::::::::::::::::.      #@%@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################**************++++++=======================================================================================================================================+++******++++=====+++++++********++++++++++*********###**+++++**+++++======================================++++++++++++++++++++++++++****************************************######################################################*=................:**#####################################################################################################################################################################################################################*****************+++++#%%%%%%%%%%%%%%%%%%%#*+#%%%%%%%%%%%%%*++++++==============++++++++++++++++**********++++++++=================-----::::::=+++++++++++*****************************+++++++++===============++++*****************+++++====+++++****************************#*************************+++++++++++++++++*******############################################**################*+++++++++++++++++++++++++*****#############################################*+++++++++++++++++++++++*####################################**********############*+==========================================+***************************************************************#################################**********************************************************************#########################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%####%#####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++*********+++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*##********+:::=*:::::::::::::+#####-::::::::###########******#+:::::::::::::::::::.      *@%@@@@@@@@@%%%%%%%%%%%%%@@%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################***************+++++========================================================================================================================================+++*******++++++++++++++********+++++++++*****++++***##**++++**++++++===============================++++++++++++++++++++++++***************************#********##################################################################*+:................+#**####*-:*############################################################################################################################################################################################################*****************++++*%%%%%%%%%%%%%%%%%%%##+*%%%%%%%%%%%%%%+++++*+=============+++++++++++++++++**********+++++++==============---::::::......-=+++++++++*******************************+++++++===============++++*****************++++======++++****************************#************************++++++++++++++++*********############################################*################*+++++++++++++++++++++++++*****##############################################*+++++++++++++++++++++++#####################################*********#############*+==========================================+****************************************************************################################*******************************************************************###########################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%###########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++*************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*##*********:::**:::::::::::::-#####+:::::::-###########***#**#=:::::::::::::::::::.      =%%@@@@@@@@@%%%%%%%%%@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*************++++++=========================================================================================================================================++********+++++++++++++********++++++++****++++++***##**++++**+++++++++++===================++++++++++++++*******************************************##**#########################################################################*-................-**####**::*############################################################################################################################################################################################################*****************+++++#%%%%%%%%%%%%%%%%%%%%*+#%%%%%%%%%%%%%#++++++==============++++++++++++++++***********+++++++============-:::::............-++++++++*********************************+++++===============++++****************++++========++++**************************#*************************+++++++++++++***********#############################################################*+++++++++++++++++++++++++******##############################################*++++++++++++++++++++++*#####################################*********#############*+===========================================*****************************************************************##############################****************************************************************###############################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++**********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*##*********::-#*=:::::::::::::#####*:::::::-###########***#**#=:::::::::::::::::::       -%%@@@@@@@@@%%%%%%%%@@@%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*************++++++==========================================================================================================================================++*******+++++++++++++********++++++******++++++***###**++***++++++++++++++++++++++++++++++++++++++*****************************************#####################################################################################*+:.................:-=*#**:-#############################################################################################################################################################################################################*****************+++++*%%%%%%%%%%%%%%%%%%%%#+#%%%%%%%%%%%%%%*++++*+=============++++++++++++++++***********++++++++===========::............  .  :=++++++************************************+++===============++++***************++++========+++++*************************#*************************+++++++++++*************#############################################################+++++++++++++++++++++++++******##############################################*+++++++++++++++++++++++*#####################################*********#############*+===========================================+*****************************************************************#############################**************************************************************#################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++**********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===*##*********::+#*+:::::::::::::*#####:::::::=##########*****#*#=:::::::::::::::::::      :#%@@@@@@@@@@%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*************++++++===========================================================================================================================================++******+++++++++++++****************************####***************+++++++++++++++++++++++++****************************************###########################################################################################**-.....................:-=::*#############################################################################################################################################################################################################*****************+++++%%%%%%%%%%%%%%%%%%%%%#*%%%%%%%%%%%%%%#++++++=============+++++++++++++++++***********++++++++=========-:.......           ..-=+++++*************************************+===============++++**************++++==========++++************************#*************************++++++++++***************############################################################+++++++++++++++++++++++++******###############################################*++++++++++++++++++++++*######################################********#############**+===========================================+******************************************************************###########################***********************************************************#####################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++**********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*##*********::***+:::::::::::::*#####:::::::=##########*******#=:::::::::::::::::::      #%%@@@@@@@@@@%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*************++++++===========================================================================================================================================+++*****+++++++++++++****************************####*********************++++++++++++++****************************************#################################################################################################*=..........................=######**#####################################################################################################################################################################################################*****************+++++#%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%*++++*+============+++++++++++++++++***********+++++++++========:.....               . :=+++*+**************************************+==============++++************+++++==========+++++*************************************************+++++++++****************###########################################################*++++++++++++++++++++++++******################################################*++++++++++++++++++++++*######################################*******##############**+============================================+*****************************************************************##########################*********************************************************########################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######****************************************################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++*********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*##*********-:***=:::::::::::::+#####=::::::=##########*******#-:::::::::::::::::::      %%%%%@@@@@@@@%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*************+++++++===========================================================================================================================================++*****+++++++++++++*****************************###*****#******************+++*************************************#############################################################################################################+:..........................-+**+-:=#####################################################################################################################################################################################################*****************+++++*%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%++++*+=============+++++++++++++++++***********++++++++========:....                ....:=++*+***************************************+============++++++********++++++============+++++**********************************************++++++++++*****************##########################################################*++++++++++++++++++++++++******################################################*+++++++++++++++++++++++#######################################*******##############**+============================================+*****************************************************************##########################******************************************************##########################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#######################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######****************************************################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++*********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+##*********=:***=:::::::::::::-#####+::::::=##########********-:::::::::::::::::::      #%%%@@@@@@@@@%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*************+++++++============================================================================================================================================++****+++++++++++++*****************************###****##*****************************************#************#################################################################################################################*-.................................:######################################################################################################################################################################################################*****************+++++#%%%%%%%%%%%%%%%%%%%%%#%%#%%%%%######%#++++*+============+++++++++++++++++***********+++++++++=======.....                .....:-++******************************************+===========++++++++++++++++++==============+++++********************************************++++++++++******************#########################################################*++++++++++++++++++++++++******#################################################*++++++++++++++++++++++*#######################################******###############**+=============================================+*****************************************************************########################*****************************************************############################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%#####################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%######****************************************################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+##*********+:***-::::::::::::::#####*::::::=##########********:::::::::::::::::::.      #%%%@@@@@@@@%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*************+++++++=============================================================================================================================================++****++++++++++++*****************************####***##******************************************##############################################################################################################################+:.................................+#####################################################################################################################################################################################################*****************+++++*%%%%%%%%%%%%%%%%##%###################*+++++============++++++++++++++++++***********+++++++++=====-......               ......::=++*******************************************+==========+++++++++++++++===============++++++******************************************++++++++++*******************########################################################*++++++++++++++++++++++++******#################################################*+*+++++++++++++++++++++*#######################################*****################**+=============================================+*****************************************************************#######################***************************************************###############################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====##**********-***:::::::::::::::*#####::::::+##########******#*:::::::::::::::::::.      #%%%%@@@@@@%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************+++++++============================================================================================================================================+++***+++++************************************####***##**************************************##################################################################################################################################*-.............................:...-#####################################################################################################################################################################################################*****************++++++#%%%%%%%###############################++++*+============++++++++++++++++++**********++++++++++====-.......              .......::-=**+******************************************+========++++++++++++++=================++++++****************************************++++++++++********************########################################################++++++++++++++++++++++++******##################################################*+++++++++++++++++++++++########################################*****################**+=============================================+*****************************************************************#######################***********************************************###################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%########%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%####################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****************************************#################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++*********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====##**********=***:::::::::::::::+#####-:::::+##########*****##*:::::::::::::::::::.      #%%%%@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************+++++++=============================================================================================================================================+++**++++++++++*******************************####***##************************************#####################################################################################################################################+:................................:*####################################################################################################################################################################################################******************+++++#%%#########################**********#+++++++============+++++++++++++++++***********+++++++++====:........            ........:::-=+**********************************************++======++++++++++====================++++++*************************************+++++++++++*********************#######################################################++++++++++++++++++++++++******##################################################*+++*+++++++++++++++++++*#######################################*****##################**==============================================*****************************************************************######################*********************************************######################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%#%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****************************************#################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++**********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++*******************************************************************+++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++====*#**********+***::::::::::::::.=#####+:::::+##########*****##+:::::::::::::::::::.      *%%%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################****************+++++++=============================================================================================================================================++***+++++++++++++******************************##**##********************************#########################################################################################################################################*:.................................+####################################################################################################################################################################################################******************+++++*############***********************+++*++++*+============+++++++++++++++++***********++++++++++===:.........           .......::::---=+***********************************************++======++++++======================+++++++**********************************++++++++++++*********************######################################################*+++++++++++++++++++++++******###################################################*++++*++++++++++++++++++########################################****####################*+=============================================+****************************************************************#####################********************************************########################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%##%########%######%%###################################################%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****************************************#################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++====*#**************::::::::::::::::#####*:::::+#########******##+:::::::::::::::::::.      =%%%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################**************++++++++=============================================================================================================================================++***+++++++++++++++++****************************##*********************************##########################################################################################################################################*=.................................:###################%#%###############################################################################################################################################################################*****************++++++#####**************++++++++++++++++++++=+++++============++++++++++++++++++***********++++++++++==:..........         ........:::-----==++***********************************************++================================+++++++********************************+++++++++++++**********************####################################################*+++++++++++++++++++++++*****#####################################################++*+++++*++++++++++++++*################################################################*+=============================================+****************************************************************#####################********************************************########################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************##################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++*+++++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++===-*#**************::::::::::::::::*####*:::::+#########******##+:::::::::::::::::::.      :%%%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***************++++++++=============================================================================================================================================++**+++++++++++++++++****************************##*********************************###########################################################################################################################################+:................................:*####################################################################################################################################################################################################******************+++++********+++++++++++++++++================+++*+============+++++++++++++++++************+++++++++==:..........         .......::::---=--===+*************************************************+++=============================++++++++****************************++++++++++++++***********************###################################################*++++++++++++++++++++++******#####################################################*+++++++++++++++++++++++*################################################################*+=============================================+****************************************************************####################********************************************#########################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************##################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++*+++++*******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++===-*##*************-:::::::::::::::*#####=::::+#########******##+:::::::::::::::::::.       %%%%@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************++++++++==============================================================================================================================================++**++++++++++++++++****************************##********************************############################################################################################################################################*-.................................+####################################################################################################################################################################################################******************++++++***+++++====================------------+++++============++++++++++++++++++************+++++++++-:...........       ........:::----========+**************************************************++============================+++++++++************************++++++++++++++++***********************##################################################*++++++++++++++++++++++******######################################################*+++*+++++++++++++++++++#################################################################*+==============================================+****************************************************************##################*******************************************###########################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####***************************************##################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++*+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++==--*##*************=::::::::::::::.=#####+::::+#########******##+:::::::::::::::::::.       %%%%@@@@@@%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################**************+++++++++=============================================================================================================================================++**+++++++++++++++*****************************##********************************#############################################################################################################################################+:................................-###############+++--=*######%#####%##################################################################################################################################################################******************+++++++++========-----------------------:::::=+++*+============++++++++++++++++++************++++++++=::...........     ........::::------========++***************************************************++==========================++++++++++******************++++++++++++++++++*************************#################################################+++++++++++++++++++++++******#####################################################*++++*++++++++++++++++++*##################################################################+==============================================+****************************************************************##################*****************************************#####################################################%%%%%##################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**************************************###################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++*********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++*++*++*******************************************************************************++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++==--+##*************+:::::::::::::::-#####*::::+#########****#*##+:::::::::::::::::::.      .%%%@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************++++++++==============================================================================================================================================++*+++++++++++++++*****************************##********************************#############################################################################################################################################*-................................:###############**=::-=+*#%###########################################################################################################################################################################******************++++++=====--------------::::::::::::::::::::-=+++*============++++++++++++++++++************++++++++=-::............  .........:::------==========+*******************************************************++========================++++++++++++*********+++++++++++++++++++++++*************************################################################*+++++++++++++++++++++******#######################################################*+++*+++++++++++++++++++###################################################################+===============================================******************************************************************###############***************************************########################################################%%%%%#%%%%%############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#################%%%%%%%%%%%%#############################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########****#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************####################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++*****++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++*++***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++==--+##**************::::::::::::::::*#####-:::+#########****####+:::::::::::::::::::.      .%%%@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************+++++++++==============================================================================================================================================+++++++++++++++++*****************************##*********************************#############################################################################################################################################=................................:*#################=:-=++=+#%%###%####################################################################################################################################################################******************++++++=------:::::::::::::::::::::::::::::::::-+++*+============++++++++++++++++++************++++++++=:::.....................::::-----=============+*++******************************************************+++====================++++++++++++++++++++++++++++++++++++++++++**************************###############################################*+++++++++++++++++++++******########################################################+*++*+*++++++++++++++++*################################################*##################+===============================================******************************************************************##############*************************************##########################################################%%%%%%%%%%%%############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%################%%%%%%%%%%%##############################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########******######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************####################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++*++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+*+*+************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++===-=#***************=:::::::::::::::+#####=:::+#########****####=:::::::::::::::::::.      .%%%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%####################****************++++++++==============================================================================================================================================++++++++++++++++****+*************************##**********************************######################################################################################################################****##################*:................................=##################=:=+++=-+##########################################################################################################################################################################******************+++++=-:::::::::::::::::::::::::::::::::::::::=+++*+============+++++++++++++++++*************+*++++++-::::...................::::-----=============+*+=++*********************************************************+++==================++++++++++++++++++++++++++++++++++++++****************************#############################################*+++++++++++++++++++++*******#######################################################*+*+*+++++++++++++++++++*################################################*##################+===============================================+******************************************************************############***********************************#############################################################%%%%%%%%%%%%############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################%%%%%%%####################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*******#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####************************************#####################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++*+*++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+*******+*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++===--#***************=:::::::::::::::=#####*:::+#########*******#=:::::::::::::::::::.      :%%%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%#######################***************+++++++++==============================================================================================================================================+++++++++++++++***+++************************##***********************************###################################################################################################################******###################-:...............................-##################*-=+++=:-=*########################################################################################################################################################################******************++++++-::::::::::::::::::::::::::::::::::::::.:=++++=============+++++++++++++++++**************+++++++-::::..................::::----===============++===+*************************************************************++++==============++++++++++++++++++++++++++++++++++++****************************########################*#**################*++++++++++++++++++++++*****#########################################################**++*+*+++++++++++++++++###############################################***##################+===============================================+******************************************************************############**********************************##############################################################%%%%%%%%%%%#############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################%%%%%%%%%%%%%####################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*********####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####************************************#####################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++*+++++++++++++++++++*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**+***++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++==---*#**#***********+:::::::::::::::-#####*-::+##########**#####=:::::::::::::::::::.      :%%%@@@@@@%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%#########################**************+++++++++===============================================================================================================================================+++++++++++++***++++************************##************************************################################################################################################################*********##################+:...............................:*##################=-++++---=*#######################################################################################################################################################################*******************+++++=:::::::::::::::::::::::::::::::::::::::.-+++*+==========+++++++++++++++++++***************++**++=:::::::::::..........::::-----===============++====+++*****************************************************************++++=========++++++++++++++++++++++++++++++++++*****************************#####################*****################**++++++++++++++++++++******#########################################################**++++++++++++++++++++++*###############################################***#*################*================================================*****************************************************************############*******************************###################################################################%%%%%%%%%##############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%########################%%%%%%%%%%%%%%%%################################################################################################################################################################%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########***+++***#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####***********************************######################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+***+**+*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++==---*##**************::::::::::::::::*#####=::*##########**##*##=:::::::::::::::::::       -%%%@@@@@@%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%#########################**************+++++++++===============================================================================================================================================+++++++++++++**+++++************************##*************************************##############################################################################################################**********##################*-::.............................:*##################=-++++-:--+*##%####################################################################################################################################################################******************++++++::::::::::::::::::::::::::::::::::::::..:=+++++===========++++++++++++++++++*****************+*++=::::::::::::........::::-----================+====+++++++*********************************************************************+++++======++++++++++++++++++++++++++++******************************###################*****#################*++++++++++++++++++++******##########################################################*+++++++++++++++++++++++*###############################################***##################*+===============================================****************************************************************############********************************##################################################################%%%%%%%%%###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#########################%%%%%%%%%%%%%########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++++****###################%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**********************************#######################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+**+***+*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++===-:+*#**************::::::::::::::::*#####*::*##########**##*##=:::::::::::::::::::       =%%%@@@@@@%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%########################***************+++++++++==============================================================================================================================================++++++++++++***++++++***********************##*************************************############################################################################################################************###################=::..............................=##################*-=+++-:--=*#######################################################################################################################################################################******************++++++-::::::::::::::::::::::::::::::::::::::..-+++*+============++++++++++++++++++********************+=--:::::::::::......::::-----======================+++++++++*************************************************************************++++====+++++++++++++++++++++++********************************#################*****#################*++++++++++++++++++++******##########################################################**+++++++++++++++++++++++################################################****#################*+===============================================+***************************************************************############*****************************######################################################################%%%%%##################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################%%%%%%%%%###########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**+++++*****#################%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**********************************#######################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++*+**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++===-:=#***************::::::::::::::::+######-:+##########**##*##=:::::::::::::::::::       +%%%@@@@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%###%%%%#########################**************+++++++++===============================================================================================================================================+++++++++++**+++++++***********************##**************************************##########################################################################################################*************###################*:...............................-##################*-=+++=:---+*#######################################################################################################################################################################******************+++++=::::::::::::::::::::::::::::::::::::.::::=++*++===========++++++++++++++++++*******************+*+---:::::::::::.....::::-----======================++++++++++++++**************************************************************************+++++++++++++++++++++++++*********************************###############*****#################*++++++++++++++++++++******###########################################################*+++++++++++++++++++++++*################################################**#*#################*+================================================*********+++++************************************************############****************************###############################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################%%%%%#################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***++++++****#################%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*********************************########################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+****+********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++===-:-#***************::::::::::::::::-######=:*##########**#####=:::::::::::::::::::       #%%@@@@@@@%%%%%%%%%%%%%%@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%########################**************++++++++++===============================================================================================================================================++++++++++*+++++++++**********************#***************************************#######################################################################################################****************###################*=.:.............................:###################==+++=:---=*#######################################################################################################################################################################******************++++++:::::::::::::::::::::::::::::::::::::.:..-+++*+============++++++++++++++++++*********************+----::::::::::...:::::-----=======================++++++++++++++++++***************************************************************************++++++++++++++++++**********************************###############*****################*++++++++++++++++++++******############################################################*+++++++++++++++++++++++#################################################****##################+================================================********++++++++*********************************************############****************************################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###############################%%###################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########***++=+++****##################%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*******************************#########################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+**+*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++==--::****************-::::::::::::::::*#####*:*##########**#####=:::::::::::::::::::      .#%%@@@@@@@%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%#########################**************++++++++++==============================================================================================================================================++++++++++++++++++++**********************#***************************************###################################################################################################********************#####**#############+:.::..........................::*##################==+++=::--=*#######################################################################################################################################################################*******************+++++=.::::::::::::::::::::::::::::::::::::.:::=++*++===========++==++++++++++++++**********************+-----::::::::::::::::-----========================+++++++++++++++++++++++****************************************************************************++++++++++++**********************************##############****################*++++++++++++++++++++******############################################################*+++++++++++++++++++++++*#################################################*****#################+================================================+******++++++++++********************************************###########****************************#################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%########***++==+++****#################%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#%%%####%%%%%%%%%%%%%%%%%%########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######******************************##########################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++==--::+#**************=::::::::::::::::+#####*-*##########**#####=::::::::::::::::::.      -%%@@@@@@@@%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%#########%%%%#########################**************++++++++++===============================================================================================================================================++++++++++++++++++++*********************#***************************************##############################################################################################*************************####*******#########*-.::::...::::..................:+##################+-++++::--=+*#######################################################################################################################################################################******************++++++:::::::::::::::::::::::::::::::::::.:.::.:+++*++===========+==+++++++++++++++**********************=-----:::::::::::::::-----========================++++++++++++++++++++====++********************************************************************************++++************************************############****################*++++++++++++++++++++******#############################################################*+++++++++++++++++++++++##################################################***+*#################+================================================+******++++++++++++******************************************###########**************************####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++====++*****################%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#%########%%%%%%%%#############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######******************************##########################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++==--::=#***#**********+::::::::::::::::=######=*##########**##*##=::::::::::::::::::.      =%%@@@@@@@@%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#########%%%%%########################***************+++++++++================================================================================================================================================+++++++++++++++++++*********************#***************************************###########################################################################################****************************###************#####*=::::::::::::::::::..........:..+##################+-++++-:---+*#######################################################################################################################################################################******************++++++-.:::::::::::::::::::::::::::::::::::::::.-++*++===========+==+++++++++++++++***********************=------:::::::::::::-----=========================+++++++++++++++++++======++**********************************************************************************************************************############***#################++++++++++++++++++++*******#############################################################*+++++++++++++++++++++++#################################################***++*#################+=================================================*****++++++++++++++*****************************************##########**************************#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**++=====++****################%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#%########%%%###############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************###########################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++==--::-#***************::::::::::::::::-######**##########**#####=::::::::::::::::::.      *%%@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%##########################***************++++++++++===============================================================================================================================================++++++++++++++++++++**************************************************************######################################################################################********************************%#******************+::.::.:.::::::::::::........:..=##################*-++++-::--=*##################%######%#############################################################################################################################################*******************++++++::::::::::::::::::::::::::::::::::::::::::=++*+==========+====+++++++++++++++**********************+=------::::::::::::----==========================++++++++++++++++++++=========++******************************************************************************************************************############**#################*+++++++++++++++++++*******#############################################################***+++++++++++++++++++++*#################################################**+++*#################+=================================================*****++++++++++++++++*************************************###########**************************######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++=====++****################%%@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%###########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######****************************############################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***+*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++==--::-**#*************-::::::::::::::::*######*##########**#####=::::::::::::::::::.      *%%@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%##########################****************++++++++++===============================================================================================================================================+++++++++++++++++++**************************************************************###################################################################################***********************************##******************+-::::::::::::::::::::::::..:.:.-##################*-++++-::--=*#######################################################################################################################################################################*******************++++++-:::::::::::::::::::::::::::::::::::::::::-+++++===============++++++++++++++***********************+-------:::::::::::-----==========================++++++++++++++++++++===========++****************************************************************************************************************###########*#################*++++++++++++++++++++******##############################################################*+++++++++++++++++++++++##################################################*++++*#################*=================================================+****+++++++++++++++++***********************************############**************************######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++=====++****###############%%@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%##########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**************************##############################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++==--:::****#***********=::::::::::::::::+######*##########**#####+::::::::::::::::::.      #%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%###########################***************++++++++++================================================================================================================================================++++++++++++++++++**************************************************************#################################################################################**************************************#*******************=::.::::::::::::::::::::::::.:.:##################*==+++-::--=+#################%######################################################################################################################################################*******************+++++=::::::::::::::::::::::::::::::::::::::::::=+++++===============++++++++++++++***********************+-------::::::::::-----==========================++++++++++++++++++++==============++*************************************************************************************************************############################*+++++++++++++++++++*******###############################################################*++++++++++++++++++++++*#################################################**++++*#################*=================================================+****+++++++++++++++++++++********************************##########****************************#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++=====+++***###############%%@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%##########%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*************************###############################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++==--:::+#**#************::::::::::::::::-#################**#####*::::::::::::::::::.     .%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%###########################***************+++++++++================================================================================================================================================++++++++++++++++++***************************************************************#############################################################################*****************************************#*******************+:::::::::::::::::::::::::::.:::*##################==+++=::---+*################%######################################################################################################################################################*******************++++++:::::::::::::::::::::::::::::::::::::::::.-+++++===============++++++++++++++************************=------::::::::::-----===========================++++++++++++++++++++=================+++*******************************************************************************************************############################*+++++++++++++++++++*******###############################################################*++*++++++++++++++++++++##################################################*+++++*#################*==================================================****+++++++++++++++++++++++******************************##########****************************#####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%################################################################################################################################################################################################################%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++======++***###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%##########%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********************#################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************##*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+**************************************************************************************************++++++++++++++++++++++++++++++++++++++++++===--::-#***************-::::::::::::::::*################**######::::::::::::::::::.     -%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%##########################***************++++++++++================================================================================================================================================++++++++++++++++++***************************************************************##########################################################################***************************************************************+=::::::::::::::::::::::::::::::*##################==+++=::---=*#######################################################################################################################################################################********************+++++=:::::::::::::::::::::::::::::::::::::::::.=+++++==============+++++++++++++++************************=------::::::::::----===========================+++++++++++++++++++++====================+++**************************************************************************************************############################*+++++++++++++++++++*******################################################################*+++*++++++++++++++++++*#################################################*++++++*##################+=================================================****++++++++++++++++++++++++++**************************##########*******************************###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++==-===++****##############%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%##%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######********************###################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************####***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++==--:::*#**************=::::::::::::::::+################**######-:::::::::::::::::.     +%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%##############%%%%%%%%###########################**************++++++++++=================================================================================================================================================++++++++++++++++++**************************************************************#######################################################################*******************************************************************+::::::::::::::::::::::::::::::+##################+=+++=:::--=*########################################################################################################################################################################********************+++++::::::::::::::::::::::::::::::::.::::::::.:+++++===============++++++++++++++************************+=------:::::::::----============================++++++++++++++++++++=========================+++******************************************************************************************##############################*+++++++++++++++++++*******#################################################################++++*++++++++++++++++++*################################################*+++++++*##################+=================================================+***++++++++++++++++++++++++++++************************#**######********************************###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++==--==++****#############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*****************#####################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************####**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++==--:::+#***************::::::::::::::::-################**######+:::::::::::::::::.     *%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%###############%%%%%%%%%###########################***************+++++++++=================================================================================================================================================++++++++++++++++++***************************************************************####################################################################*********************************************************************+-:::::::::::::::::::::::::::::=##################+=+++=::---=+########################################################################################################################################################################********************+++++-:::::::::::::::::::::::::::::::::::::::.:.-+*+++===============+++++++++++++*************************+=-----:::::::::-----============================++++++++++++++++++++=============================+++++******************************************************************************###################################+++++++++++++++++++*******#################################################################*+++++++++++++++++++++++################################################**+++++++*##################+=================================================+****++++++++++++++++++++++++++++++*************************####**********************************##################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%#%############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**+===--===++***#############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########***********#########################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************####*********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************++++++++++++++++++++++++++++++++++++++++++==--:::=#***************:::::::::::::::::*###############*########:::::::::::::::::.     #%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#############%%%%%%%%%%%###########################***************+++++++++==================================================================================================================================================+++++++++++++++++*************************++**************************************################################################################************************************************************************=::::::::::::::::::::::::::::.=##################+=+++=::---=+#################%######%################################################################################################################################################*******************++++++::::.:::::::::::::::::::::::::::::::::.:..:+++++===============++++++++++++++*************************==-----::::::::-----============================++++++++++++++++++++====================================++++************************************+********************************#####################################+++++++++++++++++++********#################################################################*++++++++++++++++++++++*################################################*++++++++*##################+==================================================****+++++++++++++++++++++++++++++++*************************##***********************************##################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%##%############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==---===++***#############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*****###########################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************########*************************************************************++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+*+**+********************************************************************************************++++++++++++++++++++++++++++++++++++++++==--:::-****************-::::::::::::::::+###############*########-::::::::::::::::.     %%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%#############################***************++++++++++==================================================================================================================================================+++++++*+++++++++**********************=:..-*************************************#############################################################***************************************************************************+:::::::::::::::::::::::::::::=##################*=+++=::---=+###################%#####%################################################################################################################################################*******************+++++-:::::::::::::::::::::::::::::::::::::::...-+*+++===============+++++=+++++++**************************==-----::::::::----=====+=======================++++++++++++++++++++=========================================+++++++*****************+**+++*******************************##########################################*++++++++++++++++++********##################################################################+++++++++++++++++++++++################################################**++++++++*##################+==================================================+***++++++++++++++++++++++++++++++++++************************************************************##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#########################################################################################################################################################################################################################%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**+==----==++****############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************########************************************************************+++++++++++**+++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***************************************************************************************************++++++++++++++++++++++++++++++++++++++++==---:::*#**************+::::::::::::::::-###############*########+::::::::::::::::     :%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%##############################**************++++++++++==================================================================================================================================================++++++++++++++++++*******************=:.....:=*****************************#**#***#########################################################******************************************************************************+-::::::::::::::::::::::::::::=##################*=+++=::---=+*##################%%######################################################################################################################################################******************+++++=:::::::::::::::::::::::::::::::::::::::.:.:+++++===============++++++=+++++++*************************+=----:::::::::-----====++======================++++++++++++++++++++===========================================+==+++++++++++++++++++++******************************##############################################*++++++++++++++++++********###################################################################++++++++++++++++++++++*###############################################***++++++++*##################*==================================================+***+++++++++++++++++++++++++++++++++++***********************************************************##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**+==----==++****###########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************########************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**************************************************************************************************+++++++++++++++++++++++++++++++++++++++++==--:::+#***************:::::::::::::::::*##############*########*:::::::::::::::.     =%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%###############################**************++++++++++==================================================================================================================================================+++++++++**++++++++****************=:.........:+*******************************#**#######################################################*********************************************************************************=::::::::::::::::::::::::::::+###################=++++::---=+*###################%%%%###%%###%###########################################################################################################################################*****************++++++::.::::::::::::::::::::::::::::::::::::.:..-+++++===============+++++=++++++++*************************+=----::::::::-----====++=======================++++++++++++++++++++===========================================++++++++++++++++++++*****************************#################################################*++++++++++++++++++********###################################################################*++++++++++++++++++++++*##############################################***+++++++++*##################*==================================================+***+++++++++++++++++++++++++++++++++++++*********************************************************##################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**+==----==++****###########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************########************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++==--:::-#***************-::::::::::::::::+########################-:::::::::::::..     *%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%######%%%%%%%%%%%%%%################################***************++++++++++==================================================================================================================================================++++++++++++++++++***************-.............=****************************#*#***###################################################*****+******************************************************************************+-:::::::::::::::::::::::::::*###################+++++-:---==*#####################%%###%%################################################################################################################################################****************++++++=:.:::::::::::::::::::::::::::::::::::::.:..+*+++===============+++++==+++++++**************************=----::::::::-----====++=======================++++++++++++++++++++========================================+++++++++++++++++++****************************#####################################################*++++++++++++++++++********####################################################################+++++++++++++++++++++++##############################################****+++++++++*##################*===================================================+**+++++++++++++++++++++++++++++++++++++*********************************************************##################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***+==----==++****###########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************#########************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************+++++++++++++++++++++++++++++++++++++++++===-::::*#**************+::::::::::::::::-########################=:::::::::::::..     #%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################**************+++++++++++==================================================================================================================================================++++++++++**++++++************+-:..............-+***************************#*****###############################################*****+*********************************************************************************+=:::::::::::::::::::::::::::*###################+++++-:---==*#######################%####%%%##############################################################################################################################################***************+++++++::::::::::::::::::::::::::::::::::::::..:..-+++++==============++++++=++++++++**************************=----::::::::----=====+========================++++++++++++++++++++====================================++++++++++++++++++******************************######################################################*++++++++++++++++++*********####################################################################++++++++++++++++++++++*##############################################*****+++++++++##################*===================================================+*++++++++++++++++++++++++++++++++++++++*********************************************************##################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%##############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***+==----==++****##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************##########************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++===--:::+#***************:::::::::::::::::*#######################*::::::::::::...    .#%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################***************+++++++++++=================================================================================================================================================+++++++++++**++++++*******++=--:................:=********************#*+#********############################################**********+********************************************************************************+:::::::::::::::::::::::::::*###################+++++-:---==*#######################%%%##%%################################################################################################################################################************#*+++++++=::::::::::::::::::::::::::::::::::::.:...:.=*+++==============++++++==+++++++**************************+=----:::::::----==============================++++++++++++++++++++================================+++++++++++++++++++*****************************#########################################################*++++++++++++++++++******+**####################################################################*++++++++++++++++++++++##############################################******+++++++++##################*+==================================================+*++++++++++++++++++++++++++++++++++++++*********************************************************##################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%##############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***+==----==++****##########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************##########************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++==--:::=#***************-::::::::::::::::=########################:::::::::::....    -%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################***************+++++++++++=====================================================================================================================================+++========++++++++++++**+++++*****+=----:...................-********************#*+**#******#########################################*********************************************************************************************+-:::::::::::::::::::::::::-####################+++++-:---==*########################%%%%##################################################################################################################################################************#*++++++++:.:.::::::::::::::::::::::::::::::::.:..:..:+*+++==============+++++===+++++++**************************+=----:::::----================================++++++++++++++++++++==========================++++++++++++++++++++******************************############################################################++++++++++++++++++*********#####################################################################++++++++++++++++++++++*#############################################******++++++++++*#################*+===================================================*++++++++++++++++++++++++++++++++++++++*********************************************************###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%##############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**+==----==++****##########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************##########*************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++==--:::-****************=:::::::::::::::::########################=:::::::::.. ..    =%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################****************++++++++++===================================================================================================================================+++++======+==++++++++++++**+++++***=:.:---.....................-+*******************#*=*#*******#######################################***********************************************************************************************=:::::::::::::::::::::::::=####################+++++-:---==*########################%%%%###%###############################################################################################################################################***********#*++++++++-::::::::::::::::::::::::::::::::::::..:....=++++==============+++++===+++++++***************************+----:::::----================================++++++++++++++++++++=======================++++++++++++++++++++****************************###############################################################*++++++++++++++++++*******+*######################################################################++++++++++++++++++++++*############################################*******++++++++++*#################*+===================================================*+++++++++++++++++++++++++++++++++++++++********************************************************###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**+==----==++****##########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************###########**************************************************************+++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+*************************************************************************************+*****+++++++++++++++++++++++++++++++++++++++++==--::::*#**#************:::::::::::::::::+###########*###########*:::::::::. ...    *%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*****************++++++++++++===============================================================================================================================+++++++====+++++++++++++++++***+++**+..:---:......................:+*******************#*-+******#*##############***################*####**********+************************************************************************************+-::::::::::::::::::::::::+####################*++++-:---==*#########################%%%%##%%%###%##########################################################################################################################################*********##++++++++++:::::::::::::::::::::::::::::::::::::::....:+++++=============++++++==++++++++***************************=----:::-----=================================++++++++++++++++++++==================+++++++++++++++++++++*****************************#################################################################*++++++++++++++++++*****+*+######################################################################+++++++++++++++++++++++############################################********++++++++++*##################+===================================================++++++++++++++++++++++++++++++++++++++++******************************************************#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****##########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************+++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************###########***************************************************************+++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**************************************************************************************+*****+++++++++++++++++++++++++++++++++++++++++==--::::=#****#**********-::::::::::::::::-########*+==*###########::::::::......    #%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################******************++++++++++++============================================================================================================================+++++++++++++++++++++++++++++++*******=:---:........................:=*********************--*#**#*##############************###*******####**********************************************************************************************+=::::::::::::::::::::::::+####################*++++-:---==*##########################%%#%###################################################################################################################################################**********++++++++++-::::::::::::::::::::::::::::::::::::::.....=++++=============++++++===+++++++****************************=-----------=================================++++++++++++++++++++=============++++++++++++++++++++++*****************************####################################################################*+++++++++++++++++*******++#######################################################################++++++++++++++++++++++*############################################*******+++++++++++*##################+===================================================++++++++++++++++++++++++++++++++++++++**+++****************************************************####################################################################*****###########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****#########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************************************************************************************************+++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************############****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++==--::::-**#**#**********+:::::::::::::::::*#######+:::**##########=::::::.. ..:.   .%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################********************++++++++++==========================================================================================================================+++++++++++++++++++++++++++++++++*****+*+--:..........................:=*******************#*-:****#**###########*********************+**###***********************************************************************************************+::::::::::::::::::::::::*####################*++++-:---==*##############################%###%###############################################################################################################################################*********++++++++++=:::::::::::::::::::::::::::::::::::::::....:+++++============+++++++===+++++++***************************+=---------===================================++++++++++++++++++++======+++++++++++++++++++++++*******************************######################################################################*++++++++++++++++++*****+++*######################################################################*++++++++++++++++++++++############################################********+++++++++=+*##################*===================================================+++++++++++++++++++++++++++++++++++**+********++++***********************************************###############################################################*********##########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****#########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************############*****************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++==--:::::**##*************-.:::::::::::::::=#######*:::=###########*.:::::. ..::.   -%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*********************+++++++++++++======================================================================================================================+++++++++++++++++++++++++++++++++++******-:.............................=*********************-:+***#############**********++++++++*******###**********************************************************************************************+-:::::::::::::::::::::::*####################*++++-::--==*##################################%################################################################################################################################################********+++++++++++:::::::::::::::::::::::::::::::::::::::.....=++++============+++++++===+++++++****************************+=--------====================================++++++++++++++++++++++++++++++++++++++++++++*********************************#######################################################################*+++++++++++++++++******+++*#######################################################################++++++++++++++++++++++*###########################################********+++++++++==+*##################*+===================================================+++++++++++++++++++++++++++++++++++********++++++++************************************************###########################################################***********#########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************############******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************++++++++++++++++++++++++++++++++++++++++==--:::::+#*#**#*********#+:::::::::::::::::*#######=::-**##########:::::....:::.   +%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*********************+++++++++++++++==================================================================================================================++++++++++++++++++++++++++++++++++++++****+...............................-*********************-.=*****##########****************+++++****####**********************************************************************************************=:::::::::::::::::::::::*#####################++++-::--==*#############################*#%%%%#################################################################################################################################################********++++++++++=::::::::::::::::::::::::::::::::::::::.....:+++++============++++++====+++++++****************************=-===-=======================================++++++++++++++++++++++++++++++++++++++++************************************#######################################################################*+++++++++++++++++******+++*#######################################################################*++++++++++++++++++++++###########################################*********+++++++++===*##################*+===================================================++++++++++++++++++++++++++++==++++++****++++++++++++*************************************************########################################################************#########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************############******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************++++++++++++++++++++++++++++++++++++++++==--:::::-#**#*#***********:::::::::::::::::=#######*:::+###########=.::.....:::.   #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################***********************+++++++++++++++++=============================================================================================================+++++++++++++++++++++++++++++++++++++++++++*-...............................-*********************-.-*****##########********+++++++++++++*+**###**********************************************************************************************+:::::::::::::::::::::::######################++++-::--==*#################################%####%##############################################################################################################################################********++++++++++:::::::::::::::::::::::::::::::::::::::.....=*+++============+++++++===+++++++*****************************============================================+++++++++++++++++++++++++++++++++++*************************************##########################################################################*+++++++++++++++++*******++*########################################################################*+++++++++++++++++++++*##########################################*********+++++++++====*###################+===================================================++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************##**##############################################************##########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************############*****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************+++++++++++++++++++++++++++++++++++++++==--::::::*#*#************#=::::::-::::::::::*#######=::-*##########*::.....::::.  .#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################***********************+++++++++++++++++============================================================================================================+++++++++++++++++++++++++++++++++++++++++++++................................-*************#*****#*-.:+****#########***********+**************###*********************************************************************************************+-:::::::::::::::::::::-######################++++-::--==*#####################################################################################################################################################################################*********+++++++++-:::::::::::::::::::::::::::::::::::::::....:+++++===========+++++++===+=++++++*****************************===========================================++++++++++++++++++++++++++++++++***************************************##########################################################################*+++++++++++++++++******++++#########################################################################++++++++++++++++++++++*##########################################*********+++++++++====*######*############+===================================================++++++++++++++++++++++++++++++++=++++++++++++++++++******************************************************************#########################################***********##########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################################################################%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************############*****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************++++++++++++++++++++++++++++++++++++++==--::::::=*##**#***********::::=****=:::::::+#######*:::*###########:.....:::::.  -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################**#**##*****************++++++++++++++++===========================================================================================================+++++++++++++++++++++++++++++++++++++++++++++=................................-*********************-.:=****#########***********+++++++*++****####*********************************************************************************************=:::::::::::::::::::::-######################*+++:::--==*##################################%%####%#############################################################################################################################################*********++++++++=:::::::::::::::::::::::::::::::::::::::.:...=+++++==========+++++++=====++++++*****************************+=====================================+=+++++++++++++++++++++++++**+++********************************************#########################################################################*+++++++++++++++++******++++*########################################################################*++++++++++++++++++++++##########################################*********+++++++++=====**##################+====================================================+*+++++++++++++++++++++++++++++++==+++++++++=++++********************************************************************#########################################**********########################################################################################################**#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################################################################%%%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++********************************************************############******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************++++++++++++++++++++++++++++++++++++==--::::::-*##***#*********#=::+*****#+::::::-########=::-##########%=....::::::.  +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################**************+++++++++++++++++====================================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++: ..............................:-*********************:..=***#########************+++++++*++****####********************************************************************************************+:::::::::::::::::::::=######################*+++:::--=+*#####################################%%################################################################################################################################################********+++++++++::::::::::::::::::::::::::::::::::::::......:+++++===========+++++++====+++++++*****************************+=========+======================+++++++++++**+++++++++++++++++++**********************************************##########################################################################*+++++++++++++++++******++++*#########################################################################++++++++++++++++++++++*#########################################**********+++++++++=====**###***############+====================================================+++++++++++++++++++++++++++++++++++=++++++=+=+++****************************************************************************##################################**********###################################################################################################**+++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%###############################################################################%%%%%%%%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++==----==++****#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%################################################################################################################################################################################################################################%%%%%%%%%%%%%%%######################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++********************************************************############******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+***************************************************************************************++++++++++++++++++++++++++++++++++===--:::::::*#**##***********+:+*****#**=::::::+#######*:::###########*...:::::::.  *%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################***********++++++++++++++++++=================================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++. ..............................:=****************#****:..-***#########*+*+********++++++*++*+**####********************************************************************************************+-::::::::::::::::::::=######################*++=:::--=+*####################################%%%%################################################################################################################################################********++++++++=:::::.:::::::::::::::::::::::::::::::...:...=+++++==========+++++++====+++++++******************************+=======+++===============+++++++++++++++++*#*++++++++++++++++++**********************************************#########################################################################*+++++++++++++++++******++++*##########################################################################++++++++++++++++++++++#########################################***********++++++++======*###***#############+====================================================+*++++++++++++++++++++++++++++++++++++++==+++++*******************************************************************************################################**********##############################################################################################**++++++=++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################%%%%%%%%%%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++==----==++*****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##################################################################################################################################################################################################################################%%%%%%%%%%%########################################################################################################################################################################################################
*#*****************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++****************++++++++++++*********************************************************###########******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+****************************************************************************************++++++++++++++++++++++++++++++++===--:::::::=#*##*************=*****#****-::::.-########=.:*###########...:::::::.  #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################******#******++++++++++++++++================================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++- ................................+********************+:..:**#*########*+*************++++++++**####********************************************************************************************=::::::::::::::::::::+######################*++=::---=+*#####################################%%%%################################################################################################################################################********++++++++::.::.:::::::::::::::::::::::::::::::.......-++++++=========+++++++=====+++++++******************************+=====++*+========+++++++++++++++++++++++**##++++++++++++++++++*********************************************#########################################################################*+++++++++++++++++******++++*##########################################################################*+++++++++++++++++++++*########################################***********+++++++++======*##****#############*====================================================+*+++++++++++++++++++++++++++++++++++++++=++++**********************************************************************************###############################*********##########################################################################################**++++=+++===++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################################################################%%%%%%%%%%%%%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**++==----==++*****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#########################################################################################################################################################################################################################################%############################################################################################################################################################################################################
###****************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++**********************++++*+**********************************************************###########*****************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************+++++++++++++++++++++++++++++++===--::::::::*##**#***********************::::::+#######*::*###########..::::::::. .%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################******###*******+++++++++++++++++++===========================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++. ................................+*******************#+:..:+**########*+*************++++++++***####*******************************************************************************************+-:::::::::::::::::::*######################*++=::---=+*######################################%%%%##%#############################################################################################################################################********+++++++-.:.::::::::::::::::::::::::::::::::::.:.....++++++==========+++++++=====+++++++******************************++++++**+====++++++++++++++++++++++++++****#*++++++++++++++++++*******************************************#########################################################################*+++++++++++++++++*******++++###########################################################################++++++++++++++++++++++*########################################***********+++++++++======*******#############*+====================================================*++++++++++++++++++++++++++++++++++++++++++++************************************************************************************##***##*******################*******#######################################################################################*++++=+++++++++++++=+*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################################################%%%%%%%%%%%%%%%%%######################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#########**++==----==++*****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++***************************************************************************************###########**********************************##*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************+++++++++++++++++++++++++++++++===--::::::::+#**#***********************#+:::::-########=:*###########-.::::::::. :%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################****#####*******+++++++++++++++++++++=========================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++= .... . .........................:********************#=...:=**########**+************++++++++***###*******************************************************************************************+=:::::::::::::::::::*######################*++=::---=+*######################################%%%%%%%%############################################################################################################################################*********+++++++:::::::::::::::::::::::::::::::::::::..:....-++++++=========+++++++=====+++++++*******************************+++++**+++++++++++++++++++++++++++++++****#*++++++++++++++++++******************************************#########################################################################*+++++++++++++++++*******++++###########################################################################*+++++++++++++++++++++*########################################***********++++++++++======+*****##############*+====================================================+*++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************###############******###################################################################################*+++====+++++++++++++++=+*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################################################%%%%%%%%%##################################******#########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++==----==++*****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++********+++++++++++****************************************************************************************###########********************************####**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************++++++++++++++++++++++++++++++===--::::::::-##*#**********************#*#=:::::+#######*-*###########+:::::::::. =%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*######********+++++++++++++++++++++++=====================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++:  ..:-==+++++++++++==-::.........:*********************=...:=**########**+***********+++++++++**####*******************************************************************************************+:::::::::::::::::::*######################*++=:----=+########################################%%%%%%%%############################################################################################################################################********+++++++-.::::::::::::::::::::::::::::::::::::......:++++++=========++++++++=====+++++++*******************************++++**+++++++++++++++++++++++++++++++******+++++++++++++++++++****************************************#########################################################################*++++++*++++++++++******+++++*###########################################################################*+++++++++++++++++++++*#######################################***********+++++++++++======+*****###############+====================================================+*+++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************##############***###################################################################################*+==+==++++++=+++++++++++++=+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################################################%%%######################################***********#######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%########**++==----==++*****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++***********++++++++*******************************************************************************************##########********************************######************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%************************************************************************************************+++++++++++++++++++++===--:::::::::*#*#**************************-::::-########+*############-::::::::. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################*********+++++++++++++++++++++++++==================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++-=+++*++++++++++++*****++=::..:.:.-*********************-....=+*########**************+++++++++**####******************************************************************************************+-::::::::::::::::::*######################*++=:---==+########################################%%%%%%%%%############################################################################################################################################********++++++=::::::::::::::::::::::::::::::::::::::.:....=++++++========++++++++======++++++********************************++***+++++++++++++++++++++++++++**********+++++++++++++++++++****************************************########################################################################*++++++*++++++++++*******++++*###########################################################################*++++++++++++++++++++++#######################################************+++++++++++=====++****################+====================================================+*++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************###############*###############################################################################*+++=++==++====++++++++++++++=+=+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################%%%%%%%##################################################**************#####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%#########**++==----==++*****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++****************************************************************************************************************##########********************************#####*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***************************************************************************************************+++++++++++++++++===--:::::::::+###***********************#***:::::+########*############=::::::::. *%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################*********+++++++++++++++++++++++++++++============================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+-:::-::=*********************-....-+**#######**+************++++++++*#####******************************************************************************************=::::::::::::::::::#######################*++=:---==+#########################################%%%%%%%%#############################################################################################################################################*******+++++++:::::::::::::::::::::::::::::::::::::.:.....:+++++++=======++++++++======+++++++************************************+++++++++++++++++++++++++************+++++++++++++++++++****************************************#######################################################################*+++++**++++++++++*******++++*############################################################################*+++++++++++++++++++++*######################################************++++++++++++=====+*****################+====================================================+*+++++++++++++++++++++++++++++++++++++++**********************************************************************************************************#######*####################################################################################*++=+===+==+=++++++==++++++=+=++=+=+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################%%%%%%%%%%%%%%%%%%############################################****************####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%#########**++==----==++*****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++*****************************************************************************************************************########*********************************######*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************+++++++++++++++===--:::::::::-*##**************************#+::::-#########*#**########*::::::::. #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################********+++++++++++++++++++++++++++++++==+=======================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+************************+:....-+*########*+********+***+++++++***#####*****************************************************************************************+::::::::::::::::::#######################*++-:---==*#########################################%%%%%%%%%%###########################################################################################################################################********++++++=:::::::::::::::::::::::::::::::::::..::.....=++++++========++++++++======++++++*************************************+++++++++++++++++++*****************++++++++++++++++++++*************************************#######################################################################***+++***++++++++++******+++++*#############################################################################++++++++++++++++++++++#######################################***********++++++++++++++===++****#################+=====================================================*+++++++++++++++++++++++++++++++++++++***************************************************************************************************************##***#################################################################################*++=====+++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################%%%%%%%%%%%%%%%%%%%%%###########################################******************###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%########***+==----==++******#######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++*****************************************************************************************************************########*********************************######*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************+++++++++++++++===--::::::::::+###************************#*#-::::+##########*-+########::::::::..%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################*******++++++++++++++++++++++++++++++++++++======================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+***********************+:....:+*########*++****+******++++++++**####*****************************************************************************************+-:::::::::::::::::#######################*++-----=+*##########################################%%%%%%%%%############################################################################################################################################********++++++::::::::::::::::::::::::::::::::::::.::.....:+++++++=======++++++++======+++++++************************************++++++++++++++++*********************++++++++++++++++++++***********************************#####################################################################***********++++++++++*******++++*#############################################################################*+++++++++++++++++++++*#####################################************++++++++++++++===++****##################+=====================================================+*++++++++++++++++++++++++++++++++*++****************************************************************************************************************##***##############################################################################*+++====++=+++=+++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################%%%%%%%%%%%%%%%%%%%%%%###########################################******************###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%#########***+==---===++******#######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++*******************************************************************************************************************#######*********************************#######*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************++++++++++++++===--::::::::::=#*##**************************#-:::-##########*..=*#####*::::::::.-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################******++++++++++++++++++++++++++++++++++++++===================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++=-=+*********************=.....:+*########*++************+++++++*#####*****************************************************************************************=:::::::::::::::::#######################*++-----=+*###########################################%%%%%%%%%############################################################################################################################################*******++++++-:::::::::::::::::::::::::::::::::::.::......=++++++=======++++++++=======++++++**************************************++++++++++++************************+++++++++++++++++++**********************************#####################################################################************+++++++++******++++++##############################################################################*+++++++++++++++++++++*#####################################***********+++++++++++++++==++*****##################*+====================================================+*++++++++++++++++++++++++++++++++*++*********************************************************************************************************************############################################################################*++==========+++==+++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################********************##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%###########***+==---===++*******######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++*******************************************************************************************************************#######********************************########*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************++++++++++++++==--:::::::::::**###*************************#*::::+##########-..:+###*-::::::::.+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%########********+*++++++++++++++++++++++++++++++++++++==================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++=-=+*******************+-.....:+*########*++************+++++++*#####****************************************************************************************+:::::::::::::::::#######################*++----==+############################################%%%%%%%%%#############################################################################################################################################*******+++++=:.::::::::::::::::::::::::::::::::::::......:+++++++======+++++++++======+++++++*****************************************++++****************************++++++++++++++++++++********************************#####################################################################************+++++++++******++++++*#############################################################################*++++++++++++++++++++++####################################************++++++++++++++++=++******##################*+====================================================+*++++++++++++++++++++++++++++++++++**********************************************************************************************************************#########################################################################*++====++++===+==++==++++++++++=++++++++++++++=+*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################*********************#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%###########***+===--===++*********####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++*********************************************************************************************************************#######********************************########*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*************************************************************************************************++++++++++++++==--:::::::::::=#*##***********************##*#=.::-##########=....*#-::::::::::.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%#######**********+++++++++++++++++++++++++++++++++++++=================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================+++++++++++===+*****************+++:.....:+#########*++***********+++++++**#####***************************************************************************************+-::::::::::::::::#######################*+=----==*##################%##########################%%%%%%%%%############################################################################################################################################********+++++::::::::::::::::::::::::::::::::::::::.......=+++++++======++++++++=======+++++++*************************************************************************+++++++++++++++++++*******************************####################################################################*************+++++++++*******+++++*##############################################################################*+++++++++++++++++++++*####################################***********++++++++++++++++++++******##################*+====================================================+*+++++++++++++++++++++++++++++++++***********************************************************************************************************************######################################################################*+++=============+==+===+++++++++++++++++++++++++=+*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################**********************#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%###########***+===--===++***********##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++**********************************************************************************************************************#####*********************************#######**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************++++++++++++==--:::::::::::-####*************************###-:::+#########*...:-%=.:::::::::.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%#####*************++++++++++++++++++++++++++++++++++++++=================================================================+++++++++++++++++++++++++++++++++++++++++++++++++====================================++++++++++===++**********++++++++=......:+#########*++***********+++++*+*######***************************************************************************************=::::::::::::::::#######################*+=----==*##############################################%%%%%%%%#############################################################################################################################################*******+++++-::::::::::::::::::::::::::::::::::::::......:+++++++======++++++++=======+++++++*************************************************************************++++++++++++++++++++******************************###################################################################**************++++++++*******+++++*###############################################################################++++++++++++++++++++++####################################***********+++++++++++++++++++********##################*+=====================================================++++++++++++++++++++++++++++++++++******************************************************************************************************************************#############################################################*++++===++==+==++=========++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################***********************################################################################################################%%%%%%%%%%%%%%%%%%%%%%############***++======+++************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++***********************************************************************************************************************#####********************************########**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************++++++++++++==--::::::::::::+####**********************#***#*:::-*#########:.:::#*::::::::::.#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%#########***************+++++++++++++++++++++++++++++++++++++++================================================================+++++++++++++++++++++++++++++++++++++++++++===========================================++++++++++++++++********++++++++-......:+#########*+**+*********+*++*++*#####***************************************************************************************+::::::::::::::::#######################*+=----=+*##############################################%%%%%%%%##############################################################################################################################################******+++++=::::::::::::::::::::::::::::::::::::::::.....=+++++++======++++++++=======+++++++*************************************************************************+++++++++++++++++++*******************************#################################################################***************+++++++*******+++++*###############################################################################*+++++++++++++++++++++*###################################***********+++++++++++++++++++*********###################+=====================================================+++++++++++++++++++++******++++++********************************************************************************************************************************#########################################################*++=++===++===++======+======++++++++++++++++++++++++++=+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################************************#################################################################################################%%%%%%%%%%%%%%%%%%%##############***+++=====+++************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++***********************************************************************************************************************####*********************************#######***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************************************++++++++++++==--::::::::::::-####***************************#+:::+#########=.:::*%:::::::::::%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%#########*****************+++++++++++++++++++++++====++++++++++++++=============================================================++++++++++++++++++++++++++++++++++++++++=================================================+++++++++++++++*******++++++++:......:*#########*++************++++++*#####**************************************************************************************+-:::::::::::::::#######################*+=---==+*###############################################%%%%%%%%#############################################################################################################################################*******+++++:.::::::::::::::::::::::::::::::::::::::::...:+++++++======++++++++=======+++++++**************************************************************************+++++++++++++++++++******************************################################################################****************++++++******++++++*################################################################################++++++++++++++++++++++###################################***********++++++++++++++++++++*********###################+=====================================================+++++++++++++++++++++*******+++***********************************************************************************************************************************######################################################*++==+==+============+==========+++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################************************#################################################################################################%%%%%%%%%%%%%%%%%%###############****++=====++*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++************************************************************************************************************************************************************#######****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*************************************************************************************************+++++++++==--:::::::::::::*#####*#*************************=:::#########*::::=%=::::::::.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%##########*******************++++++++++++++++++++========+++++++++++++++==========================================================+++++++++++++++++++++++++++++++++++=======================================================+++++++++++++++******+++++++=:......:*#########*++************+++++**#####**************************************************************************************=:::::::::::::::#######################*+----==+############%%#####%#############################%%%%%%%##############################################################################################################################################*******++++-.::::::::::::::::::::::::::::::::::::::::::::++++++++=====++++++++=======++++++++*************************************************************************+++++++++++++++++++****************************################################################################******************+++++*******++++++################################################################################*+++++++++++++++++++++*##################################***********+++++++++++++++++++***********###################+======================================================++*+++++++++++++++++********************************************************************************************************************************************#****################################################*+==============================++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################*************************#################################################################################################%%%%%%%%%%%%%%###################***++++==+++*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%%################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++***********************************************************************************************************************************************************########***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************++++++++==--:::::::::::::=####*#***************************-::=#########=.:::#*:::::::::*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%#############*****************+++++++++++++++++++++=========+++++++++++++++++++====================================================+++++++++++++++++++++++++++++++++==============================================================++++++++++++******++++++-.......:*#########*++*+**********+++++*######*************************************************************************************+-::::::::::::::########################+----==*#%##########%####################################%%%%%%%%##############################################################################################################################################******++++=:::::::::::::::::::::::::::::::::::::::::::::-+++++++=====++++++++========++++++++*************************************************************************+++++++++++++++++++***************************################################################################******************++++******+++++++*################################################################################*+++++++++++++++++++++*#################################***********++++++++++++++++++++***********###################+=======================================================+++++++++++++++++++***************************************************************************************************************************************************############################################*+================================++++++++++++++++++++++++++++=+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################*************************#################################################################################################%%%%%%%%%%%%%####################****++++++++*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++***********************************************************************************************************************************************************#######***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************+++++++==--::::::::::::::*#####**************************#*:.:*#########-:::*%-::::::::#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%#################%%%%%%%%%%%%%###############*******************++++++++++++++++++============++++++++++++++++++++++==============================================+++++++++++++++++++++++++++++++====================================================================+++++++++******++++++:.......-*#########*++************+++++*######************************************************************************************+=:::::::::::::-########################+---==+*#%################################################%%%%%%%##############################################################################################################################################*******++++::::::::::::::::::::::::::::::::::::::::::::::++++++++====+++++++++=======++++++++*************************************************************************++++++++++++++++++++***************************#############################################################*******************++++*******++++++*################################################################################*++++++++++++++++++++++#################################***********+++++++++++++++++++*************###################+========================================================++++++++++++++++++****************************************************************************************************************************************************########################################*++==================================++++++++++++++++++++++++++++=+*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################**************************##################################################################################################%%%%%%%%%%%#####################****+++++++**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####%%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++************************************************************************************************************************************************************#######***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************++++==--::::::::::::::=####*#**************************#*:.-#########*::.*%*::::::::%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%%%%%%%%%%#################*******************+++++++++++++++++===============+++++++++++++++++++++++++========================================++++++++++++++++++++++++++++++=======================================================================+++++++++*****+++++=........-##########*+*************++++**######************************************************************************************=:::::::::::::-########################=---==+###################%################################%%%%%%%##############################################################################################################################################******++++::::::::::::::::::::::::::::::::::::::::::::::=+++++++=====++++++++========++++++++*************************************************************************+++++++++++++++++++****************************###########################################################********************+++*******++++++*#################################################################################*+++++++++++++++++++++*################################************++++++++++++++++++**************###################++=========================================================++++++++++++++++****************************************************************************************************************************************************######################################*++======+==============================+++++++++++++++++++++++++++++*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################***************************#################################################################################################%%%%%%%%%%%####################******++++++**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++************************************************************************************************************************************************************#######**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************++++==--:::::::::::::::*#####*************************#*#*-:+#########=::+%%=::::::-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%###################*******************++++++++++++++++++=================+++++++++++++++++++++++++===================================+++++++++++++++++++++++++++++++==========================================================================+++++++******++++-........=##########**+*************+*+*#######***********************************************************************************+-::::::::::::-########################=---==*#%#%################################################%%%%%%%%##############################################################################################################################################******+++-::::::::::::::::::::::::::::::::::::::::::-::-++++++++====+++++++++=======+++++++++***********++++++++******************************************************+++++++++++++++++++***************************##########################################################********************+++******+++++++*#################################################################################*++++++++++++++++++++++################################************++++++++++++++++++***************###################++===========================================================++++++++++++++**************************************************************************************************************************************************######################################*+=======+================================++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################***************************##################################################################################################%%%%%%%%%#####################*******++++***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++************************************************************************************************************************************************************#######**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************************************++++==--:::::::::::::::=######********************#****#*#*++##########-:+%%#::::::+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%#######%%%%%%%%%%%%%%%%%%%###################*********************+++++++++++++++++====================++++++++++++++++++++++++================================++++++++++++++++++++++++======+===========================================================================+++++++******++++:........+##########**+************+++**#######**********************************************************************************+-::::::::::::-#######################*---==+*###%#################################################%%%%%%%###############################################################################################################################################*****+++=::::::-=::::::.:::::::::::::::::::::::::::-:::=+++++++====+++++++++========+++++++++++*+*++++++++++++++++++*************************************************+++++++++++++++++++****************************########################################################*********************++******+++++++*##################################################################################*+++++++++++++++++++++*###############################************++++++++++++++++++**#*************###################++============================================================+++++++++++++********************************************************************************************************************************************##***#####################################*+===========+===============================+++++++++++++++++++++++++=+++*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%##%%%###%%%%%%%%%%%%%%%%%%%%%##########################################################***************************##################################################################################################%%%%%%%%#####################*******+++++***************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%######%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*****************************************************************************************************************************###**************************************************************************************************************************************************************************************+**************++++++++++************************************************************************************************************************************************************######***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************++++==--::::::::::::::::*#####*************###**####****################:=#%%=:::::#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%###%%%%%%%%%%%%%%%%%%%%%%%####################*********************++++++++++++++++++=======================++++++++++++++++++++++============================+++++++++++++++++++++========================================================================================++++++*******++=........:*##########***************+**+*#######**********************************************************************************=::::::::::::-#######################*-:-==*#######################################################%%%%%%%################################################################################################################################################****+++::::::-+:::::::::::::::::::::::::::::::::--:::-++++++++====++++++++========++++++++++++++++++++++++++++++++++++**********************************************+++++++++++++++++++***************************#######################################################*********************++******+++++++*##################################################################################*++++++++++++++++++++++##############################*************++++++++++++++++++**##*************###################++==============================================================++++++++++++*************************************************************************************************************************************************##################################*+=====+========================================+++++++++++++++++++++++++++++#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%############################%%%%%%%############################################################***************************##################################################################################################%%%%%%%%####################*******++++++*************+*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%######%%######################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*****************************************************************************************************************************####************************************************************************************************************************************************************************************+++*************++++++++++************************************************************************************************************************************************************######***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************************************++++==--::::::::::::::::=##########*******####**####**##################*:#%%#:::::%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%########################*********************++++++++++++++++++==========================+++++++++++++++++++++========================+++++++++++++++++++++==========================================================================================++++++*******++-........:*##########**+************+++**######**********************************************************************************+::::::::::::-#######################*-:-=+*###%###################################################%%%%%%%#################################################################################################################################################***+++-:::::-+-:::::::::::::::::::::::::::::::::-::::++++++++====+++++++++=======++++++++++++++++++++++++++++++++++++++*********************************************++++++++++++++++++***************************######################################################**********************+******++++++++###################################################################################*+++++++++++++++++++++*##############################************++++++++++++++++++**##**************###################*+===============================================================+++++++++++*****************************************************************************************************************************************************############################*+========================================================+++++++++++++++++++++#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%###############################################################################################***************************##################################################################################################%%%%%%%%###################*******++++++++***********++*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%######%%%#####################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####***************************************************************************************************************************######******************************************************************************************************************************************************************+++++**********++++++*************++++++++++************************************************************************************************************************************************************######**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************************************************+++++==--:::::::::::::::::*######**###*###################################**%%%-.::-%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%#%%%%%%%%%%%%%%%%%%%%%%%%%%########################***********************++++++++++++++++==+===========================+++++++++++++++++++====================+++++++++++++++++++++++============================================================================================+++++******++.........-*##########**+************+++*########********************************************************************************+-:::::::::::-#######################+:--=+#########################################################%%%%%%%#################################################################################################################################################***++=:::::=++::.::.::::::::::::::::::::::::::::::::=+++++++====+++++++++========+++++++++++++++++++++++++++++++++++++++++*****************************************+++++++++++++++++++***************************####################################################*****************************++++++++*###################################################################################++++++++++++++++++++++##############################*************+++++++++++++++++**###**************###################*++================================================================+++++++++**++++**********************************************************************************************************************************************###########################*+============================================================++++++++++++++=++++*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################***************************##################################################################################################%%%%%%%%##################******++++++++++***********+++%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%#######%%%######################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####***************************************************************************************************************************#######*****************************************************************************************************************************************************************++++***********++++++*************+++++++++*************************************************************************************************************************************************************#####***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*****************************************************************************************+++++==--:::::::::::::::::-#################################################%%%*:::+%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**********************+++++++++++++++++++==+===========================+++++++++++++++++++================+++++++++++++++++=++++++===============================================================================================+++******+=.........=###########**+***********++++*#######*********************************************************************************=:::::::::::-#######################+:--=*#########################################################%%%%%%%%#################################################################################################################################################**+++-:::-+++-::::::::::::::::::::::::::::::::::::::++++++++===+++++++++========+++++++++++++++++++++++++++++++++++++++++++****************************************+++++++++++++++++++**************************###################################################*****************************++++++++*###################################################################################*+++++++++++++++++++++*#############################*************+++++++++++++++++**###***************###################*++==================================================================++++++++++++++********************************************************************************************************************************************##########################*+==============================================================++++++++++++++++++++#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################***************************##################################################################################################%%%%%%%%%################******+++++++++++***********+++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################%%%@@@@@@@@@@@@@@@@@@@@@%%%%%#######%%%%#####################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####**************************************************************************************************************************########******************************************************************************************************************************************************************+++***********++++++*************+++++++++*************************************************************************************************************************************************************#####***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************+++++==--::::::::::::::::::+#################################################%%%+::*#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################**********************++++++++++++++++++++++==============================++++++++++++++++++=============++++++++++++++++==++++++=================================================================================================++******+-.........+###########**+************+++*#######********************************************************************************+-::::::::::-#######################=:--+*####%#####################################################%%%%%%%##################################################################################################################################################**+++++++++++:::.::::::::::::::::::::::::::::::::::=++++++++==++++++++++========++++++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++**************************##################################################*****************************++++++++*####################################################################################++++++++++++++++++++++*############################*************+++++++++++++++++***##****************###################*++===================================================================++++++++++++++************************************************************************************************###************************#########################################*+===============================================================++++++++++++++++=+++*#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################***************************##################################################################################################%%%%%%%%%###############******++++++++++++***********+++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################%%%%%@@@@@@@@@@@@@@@@@@%%%%%#######%%%%%#####################################################################################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####**************************************************************************************************************************########********************************************************************************************************************************************************************************++++++*************+++++++++*************************************************************************************************************************************************************####*****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************++++==--::::::::::::::::::-#################################################%%%%::######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################***********************++++++++++++++++++++++===============================++++++++++++++++++=========+++++++++++++++=====++++++=================================================================================================++******+:.........+############**************++**#######*******************************************************************************+-::::::::::-#######################=:-=+#####%#####################################################%%%%%%%%##################################################################################################################################################*+++++++++++::::::::::::::::::::::::::::::::::::::-++++++++==++++++++++========++++++++++++++++++++++++++++++++++++++++++++++*************************************##*++++++++++++++++*************************#################################################*****************************++++++++*####################################################################################*+++++++++++++++++++++*##***########################************++++++++++++++++****##*************++**###################*++====================================================================+++++++++++++*******************************************************************************************######################################################################**+======+==========================================================+++++++++++++++==++++#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################***************************##################################################################################################%%%%%%%%%%#############******++++++===++++***********+++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################%%%%%%@@@@@@@@@@@@@@%%%%%%########%%%%%######################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*************************************************************************************************************************############*****************************************************************************************************************************************************************************++++++*************+++++++++**************************************************************************************************************************************************************##*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**************************************************************************************++++==--:::::::::::::::::::+#################################################%%%+:######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################***********************++++++++++++++++++++++=================================++++++++++++++++++=====+++++++++++++++======++++++===================================================================================================+******+:........:*############**************++*########*******************************************************************************=::::::::::-#######################-:-=*#####%######################################################%%%%%%%%##################################################################################################################################################*++++++++++=::::::::::::::::::::::::::::::::::::::+++++++++==+++++++++=========+++=====+++++++++++++++++++++++++++++++++++++*************************************##*++++++++++++++++*************************################################################*****************************++++++++*#####################################################################################++++++++++++++++++++++*#***########################************++++++++++++++++****##**************+++*####################++======================================================================++++++++++++******************************************************************************************#####################################################################*+===================================================================+++++++++++++++=+=+++*#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################***************************##################################################################################################%%%%%%%%%%############******+++++=====++++**********++++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################%%%%%%@@@@@@@@@@@%%%%%%%#########%%%%%%#####################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####************************************************************************************************************************###############***************************************************************************************************************************************************************************++++++*************+++++++++*************************************************************************************************************************************************************************************************************++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************++++==--:::::::::::::::::::-*##################################################%#:######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%#%%%%%%%%%%%%%%%%%%%%%%%################################***********************+++++++++++++++++++++++++================================++++++++++++++++++++++++++++++++++=======+++++++===================================================================================================+******+.........-*############*+*************+*########******************************************************************************+::::::::::-#######################---+#############################################################%%%%%%%%###################################################################################################################################################+++++++++++:::::::::::::::::::::::::::::::::::::.-++++++++==+++++++++==========+=======+++++++++++++++++++++++++++++++++++++*************************************#*+++++++++++++++++************************###############################################*****************************++++++++*#####################################################################################*++++++++++++++++++++++*****#######################************++++++++++++++++****##**************++++**###################++=======================================================================+++++++++++*****************************************************************************************####################################################################*+=====================================================================+++++++++++++++++=++++#%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################****************************#################################################################################################%%%%%%%%%%###########******++++++=====++++**********++++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################%%%%%%%%%@@@@@%%%%%%%%##########%%%%%%######################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####***************************************************************************************************#######################################************************************************************************************************************************************************************************+++++++************+++++++++*******************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***********************************************************************************++++==--::::::::::::::::::::=##################################################%#=######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%###############################************************+*++++++++++++++++++++++++++==============================++++++++++++++++++++++++++++++=========+++++++====================================================================================================+*******...... ..=*############***************+*########*****************************************************************************+-:::::::::-#######################---+##%###########################################################%%%%%%%%##################################################################################################################################################*++++++++++-::::::::::::::::::::::::::::::::::::::+++++++++==+++++++++==================+++++++++++++++++++++++++++++++++++++*****+********************************++++++++++++++++++***********************##############################################*****************************++++++++*######################################################################################++++++++++++++++++++++***#########################*************++++++++++++++**********************+++++*###################++=======================================================================+++++++++++****************************************************************************************###################################################################*+==========+============================================================++++++++++++++++++++++*#%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################****************************#################################################################################################%%%%%%%%%%%#########******++++++======++++***********+++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################%%%%%%%%%%%%%%%%%%%%###########%%%%%%######################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####**************************************************************************************************#############################################*******************************************************************************************************************************************************************+++++++************+++++++++********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************++++==--:::::::::::::::::::::*##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%##%%#%%%%%%%%%%%%%%%%%%%%%%%###############################**************************+++++++++++++++++++++++++++==============================+++++++++++++++++++++++++++===========+++++++====================================================================================================+*******: .......+#############*****************#######*****************************************************************************+=:::::::::-######################*--=*##%##%########################################################%%%%%%%%###################################################################################################################################################*+++++++++=:::::::::::::::::::::::::::::::::::::.=++++++++==+++++++++===================+++++++++++++++++++++++++++++++++++++****++++*****************************++++++++++++++++++***********************#############################################*****************************++++++++*######################################################################################*++++++++++++++++++++++***########################*************++++++++++++++***********************+++++*###################++======================================================================++++++++++++***************************************************************************************###################################################################++========================================================================+++++++++++++++++++++++##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################****************************#################################################################################################%%%%%%%%%%%########*******+++++=======++++***********+++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################%%%%%%%%%%%%%%%%%%############%%%%%%%#####################################################################################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*************************************************************************************************################################################****************************************************************************************************************************************************************+++++++*************++++++++**********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*******************************************************************************++++==--:::::::::::::::::::::-######*###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%##################################*************************++++++++++++++++++++++++++++++++++==========================+++++++++++++++++++++++==============+++++=====================================================================================================+*******- ......:*#############*****************#######*****************************************************************************+:::::::::=######################+--=*##%############################################################%%%%%%%%%##################################################################################################################################################*+++++++++:::::::::::::::::::::::::::::::::::::.-++++++++==++++++++++===================++++++++++++++++++++++++++++++++++++++*++++++****************************+++++++++++++++++++**********************############################################*****************************++++++++*#######################################################################################++++++++++++++++++++++**#*#######################*************++++++++++++++***********************+*++++*###################++======================================================================+++++++++++++***********************************************************************************########################################################*####*#####**+=====================================================================++++++++++++++++++++++++++++*####%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################****************************#################################################################################################%%%%%%%%%%%#######*******+++++========++++***********+++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################%%%%%%%%%%%%%%#############%%%@%%%%######################################################################################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*************************************************************************************************################################################****************************************************************************************************************************************************************+++++++*************++++++++**********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************************************++++==--::::::::::::::::::::::+####*####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%###################################************************++++++++++++++++++++++++++++++++++++==========================+++++++++++++++++++++================+++======================================================================================================+*******-.......=*#############*****************#######****************************************************************************+-::::::::=######################+-=+###%############################################################%%%%%%%%%###################################################################################################################################################*++++++++-::::::::::::::::::::::::::::::::::::::+++++++++==+++++++++====================++++++++++++++++++++++++++++++++++++++++++++++***************************+++++++++++++++++++*********************###########################################*****************************+++++++++#######################################################################################*+++++++++++++++++++++***########################**************+++++++++++++************************++++++*###################++=====================================================================++++++++++++++***********************************************************************************######################################################*###**###*##*+======================================================================++++++++++++++++++++++++++++++***####%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################****************************################################################################################################%%%%%%%%%%%%#######*******+++++========++++***********++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################%%%%%%%%################%%%@@%@%#######################################################################################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*************************************************************************************************################################################*****************************************************************************************************************************************************************++++++*************++++++++**********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*****************************************************************************++++==--::::::::::::::::::::::-*#################################################%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%###################################*************************++++++++++++++++++++++++++++++++++++++=========================+++++++++++++++++++++===============++=======================================================================================================+*******=.......+*#############****************########***************************************************************************+=::::::::=%#####################+-=+#################################################################%%%%%%%%%################################################################################################################################################%%#*++++++++::::::::::::::::::::::::::::::::::::::=+++++++++=+++++++++====================+++++++++++++++++++++++++++++++++++++++++++++++**************************+++++++++++++++++++**********************########################################******************************+++++++++*#######################################################################################++++++++++++++++++++++**########################**************+++++++++++++************************++++++++###################*++===================================================================++++++++++++++++********************************************************************************###########################################################*###*##*+========================================================================++++++++++++++++++++++++++++++++*****###%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################****************************################################################################################################%%%%%%%%%%%%######*******++++++========++++***********++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################%%@@@@%%%######################################################################################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*******************************************************************+******+++********************###################################################**************************************************************************************************************************************************************++++++*************++++++++**********************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************++++==--:::::::::::::::::::::::=#################################################%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%#####################################*************************+++++++++++++++++++++++++++++++++++++++=========================+++++++++++++++++++*++======================================================================================================================+*******+......-+*#############****************########**************************************************************************+=::::::::+%#####################===*#################################################################%%%%%%%%%##################################################################################################################################################%#*+++++++::::::::::::::::::::::::::::::::::::::-+++++++++==+++++++++====================+++++++++++++++++++++++++++++++++++++++++++++++++************************+++++++++++++++++++*********************########################################****************************++++++++++*#######################################################################################*+++++++++++++++++++++**########################**************+++++++++++++*************************++++++++###################*++==================================================================+++++++++++++++++********************************************************************************#########################################################**##*###*+========================================================================+++++++++++++++++++++++++++++++++++******###%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################****************************###############################################################################################%%%%%%%%%%%%%#####********+++++=========++++************+#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################%%@@@@@%@%#########################################################################%%%%%%%%%#####################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*******************************************************************+*******++********************#####################################################************************************************************************************************************************************************************++++++**************++++++*******************************************************************************************++++************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************++++==--::::::::::::::::::::::::+###############################################%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%#######################################*************************++++++++++++++++++++++++++++++++++++++++=========================+++++++++++++++++++***+====================================================================================================================+*******+......=+*#############****************########**************************************************************************+-:::::::*######################==+*#################################################################%%%%%%%%%%####################################################################################################################################################*++++++=::::::::::::::::::::::::::::::::::::::=++++++++==+++++++++=====================+++++++++++++++++++++++++++++++++++++++++++++++++***********************+++++++++++++++++++**********************#####################################*****************************++++++++++*########################################################################################++++++++++++++++++++****#######################**************++++++++++++**************************+++++++++*##################*++=================================================================+++++++++++++++++++*******************************************************************************##########################################################**##**++=========================================================================++++++++++++++++++++++++++++++++++++++++***#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################****************************#############################################################################################%%%%%%%%%%%%%%%#####*******++++++=========++++*************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################%%@@@@@%@%%###################################################################%%%%%%%%%%%%%%%#####################################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####******************************************************************+******************************######################################################***********************************************************************************************************************************************************++++++**************++++++*******************************************************************************************++++************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************++++==--::::::::::::::::::::::::-*##############################################%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%########################################************************+++++++++++++++++++++++++++++++++++++++++===========================++++++++++++++++++****++=================================================================================================================+*******+:....-++*#############***************#########*************************************************************************+-::::::-#######################==+*##################################################################%%%%%%%%%%###############################################################################################################################################%#%%#*++++++::::::::::::::::::::::::::::::::::::::-+++++++++=+++++++++=====================++++++++++++++++++++++++++++++++++++++++++=+++++++************************#*++++++++++++++++***********************###################################****************************++++++++++*########################################################################################*+++++++++++++++++++*****######################**************+++++++++++****************************+++++++++*##################*++===============================================================+++++++++++++++++++++*******************************************************************************########################################################*####**+===========================================================================++++++++++++++++++++++++++++++++++++++++++*##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################****************************#########################################################################################%%%%%%%%%%%%%%%%%%%####********++++++=========++++*************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################%@@@@@@@@@%##############################################################%%%%%%%%%%%%%%%%%%%%%#####################################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*************************************************************************************************#######################################################**********************************************************************************************************************************************************++++++**************+++++*******************************************************************************************+++++************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************+++==--:::::::::::::::::::::::::=##############################################%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%##########################################************************+++++++++++++++++++++++++++++++++++++++===============================+++++++++++++++++*******++=============================================================================================================+********- ...=+**#############***************#########**********************************************************************#*+=::::::=#######################=++####################################################################%%%%%%%%%################################################################################################################################################%##%#*+++++-::::::::::::::::::::::::::::::::::::::=+++++++++=+++++++++=====================+++++++++++++++++++++++++++++++++++++++++=++++++++***********************##*++++++++++++++++**********************##################################****************************+++++++++**#########################################################################################+++++++++++++++++++*****######################**************+++++++++++****************************++++++++++*##################*++==============================================================++++++++++++++++++++++*******************************************************************************#########################################################*##*+============================================================================++++++++++++++++++++++++++++++++++++++++++*####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%######################################################################################################****************************##################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*******+++++++=========++++*************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################%%@@@@@@@@@%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*************************************************************************************************########################################################*********************************************************************************************************************************************************++++++**************+++++*******************************************************************************************+++++************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************+++==--::::::::::::::::::::::::::+#############################################%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################***********************+++++++++++++++++++++++++++++++++++++++===================================++++++++++++++++*******++===========================================================================================================+********-. .-++*###############**************#########********************************************************************##*++::::::+######################*=++##%#################################################################%%%%%%%%%%###################################################################################################################################################%#+++++=::::::::::::::::::::::::::::::::::::::=+++++++++=+++++++++======================+++++++++++++++++++++++++++++++++++++++++==++++++++**********************##+++++++++++++++++*********************#################################****************************+++++++++**#########################################################################################*++++++++++++++++++******######################**************++++++++++*****************************++++++++++*##################*++=+===========================================================+++++++++++++++++++++++*********************************************************************************#####*##################################################*+==============================================================================+++++++++++++++++++++++++++++++++++++++++*######%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################################################################################****************************#############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******+++++++=========++++************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%##%##################################################################################################################################################################################%%@@@@@@@@%@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
####**************************************************************************************************########################################################**********************************************************************************************************************************************************+++++*************************************************************************************************************++++++***********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************+++==--::::::::::::::::::::::::::-*############################################%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%############################################*********************++++++++++++++++++++++++++++++++++++++++++======================================+++++++++++++++*******+++========================================================================================================+********=. :=++*###############**************########********************************************************************#**++-:::::*######################*=+*#####################################################################%%%%%%%%%%###################################################################################################################################################%#+++++:::::::::::::::::::::-:::::::::::::::::+++++++++=++++++++++======================+++++++++++++++++++++++++++++++++++++++++==++++++++*********************##*++++++++++++++++***********************##############################*****************************++++++++**##########################################################################################+++++++++++++++++++*****######################***************++++++++*******************************+++++++++++##################*+++==========================================================++++++++++++++++++++++++++*********************************************************************************#####*########################################*###*###*+====================================================================+==========++++++++++++++++++++++++++++++++++++++++*#########%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####%#################################################################################################****************************###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******++++++==========++++************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############################################################################################################################################################################################%%@@@@@@@@@@@%%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
####***************************************************************************************************########################################################*********************************************************************************************************************************************************+++++*************************************************************************************************************+++++++***********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************************+++==--:::::::::::::::::::::::::::-*###########################################%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%##############################################********************+++++++++++++++++++++++++++++++++++++++++++++======================================+++++++++++++++++****+++=======================================================================================================++*******+. -+++*###############*+************########******************************************************************##***+-:::::#######################+++*#####################################################################%%%%%%%%%%###################################################################################################################################################%##++++::::::::::::::::::::---::::::::::::::::=+++++++++++++++++++======================++++++++++++++++++++++++++++++++++++++++++==+++++++++********************##*++++++++++++++++***********************###########################******************************+++++++++###########################################################################################*+++++++++++++++++*******#####################***************++++++++*******************************++++++++++++###################+++=========================================================+++++++++++++++++++++++++++*********************************************************************************#############################################*##*##**++================================================================================+++++++++++++++++++++++++++++++++++++++*############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####%#################################################################################################****************************###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******++++++==========++++************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########################################################################################################################################################################################%%%@@@@@@@@@@@%%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################%%%%%%%%%%@@@@@@%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
###****************************************************************************************************########################################################*********************************************************************************************************************************************************+++++*************************************************************************************************************++++++++**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************+++==--::::::::::::::::::::::::::::=###########################################%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%###############################################*******************++++++++++++++++++++++++++++++++++++++++++++++=========================================++++++++++++++++**++========================================================================================================+********+:.++++*###############*************#########****************************************************************##****+=::::-#######################+++*######################################################################%%%%%%%%%%###################################################################################################################################################%#*+++-::::::::::::::::::----::::::::::::::::-+++++++++=+++++++++========================+++++++++++++++++++++++++++++++++++++++++===++++++++*******************##*+++++++++++++*+++*************************#######################*******************************++++++++############################################################################################+++++++++++++++++*******#####################***************++++++++*******************************+++++++++++++###################+++========================================================++++++++++++++++++++++++++++**********************************************************************************#############################################*##*#*+==================================================================================++++++++++++++++++++++++++++++++++++++*##############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###%#################################################################################################****************************##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******++++++===========+++************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################################################################################################################################################################################%%@@@@@@@@@@@@@%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************########################################################*******************************************************************************************************************************************************++++++*************************************************************************************************************++++++++**********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%****************************************************************++==--:::::::::::::::::::::::::::::+#########################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%#################################################******************+++++++++++++++++++++++++++++++++++++++++++++++===========================================++++++++++++++++++========================================================================================================++********-=++++*###############*************#########**************************************************************##*****+=::::+#######################+=*#%#####################################################################%%%%%%%%%%####################################################################################################################################################%#*++=:::::::::::::::-:-------::::::::::::::-+++++++++=+++++++++=========================+++++++++++++++++++++++++++++++++++++++++===+++++++++******************##*+++++++++++***++***************************##*********#########*******************************++++++++*###########################################################################################*++++++++++++++++*******#####################***************++++++++********************************+++++++++++++*##################+++=======================================================+++++++++++++++++++++++++++++***********************************************************************************#############################################*#*++===================================================================================+++++++++++++++++++++++++++++++++++++*################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###%#################################################################################################****************************#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******++++++===========+++************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################%%@@@@@@@@@@@@@@@%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************########################################################*******************************************************************************************************************************************************++++++************************************************************************************************************++++++++++*********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************+++=--::::::::::::::::::::::::::::::+########################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%###################################################*****************+++++++++++++++++++++++++++++++++++++++++++++++++==============================================+++++++++++++=========================================================================================================+*********++++++*###############*************#########*************************************************************#******++-:::*#######################++#%#%####################################################################%%%%%%%%%%#######################################################################################################################################################*++:::::::::::::::---------:::::::::::::::=+++++++++++++++++++========================++++++++++++++++++++++++++++++++++++++++++===+++++++++*****************###+++++++++++*****+*******************************************##*******************************++++++++*############################################################################################++++++++++++++++********####################****************++++++*********************************++++++++++++++*##################+++=======================================================++++++++++++++++++++++++++++++*************************************************************************************######################################**#*#*+=====================================================================================++++++++++++++++++++++++++++++++++=+*##################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#################################################################################################****************************##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******++++++===========+++***********#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################%@@@@@@@@@@@@@@@@%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************########################################################*********************************************************************************************************************************************************+++*************************************************************************************************************++++++++++++*******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************+++=--:::::::::::::::::::::::::::::::*#######################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%####################################################*****************++++++++++++++++++++++++++++++++++++++++++++++++++=================================================+++++++++==========================================================================================================++*********+++++*###############*************#########***********************************************************#*******++-:::#######################*+*#########################################################################%%%%%%%%%###################################################################################################################################################%##%#++-::::::::::::::---------:::::::::::::::-+++++++++++++++++++=========================++++++++++++++++++++++++++++++++++++++++++===+++++++++*****************##*+++++++++++*****+*****************************************#*********************************+++++++#############################################################################################*+++++++++++++++********####################*****************+++++*********************************+++++++++++++++*##################+++=======================================================++++++++++++++++++++++++++++++*************************************************************************************###*###############################**####**+======================================================================================++++++++++++++++++++++++++++++++=++*###################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#################################################################################################*****************************#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******++++++===========+++***********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################%##################################################################################################################################################################################################################################################################################################**#######################################################################################################################################################################################
********************************************************************************************************#########################################################*********************************************************************************************************************************************************++************************************************************************************************************+++++++++++++++++***************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************+++=--:::::::::::::::::::::::::::::::-*######################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++=================================================+++++++++==========================================================================================================++**********+++**###############*************#########*********************************************************##*******++=::-#######################**###%######################################################################%%%%%%%%######################################################################################################################################################%#%*+=:::::::::::::::--------::::::::::::::::+++++++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++===++++++++++****************##*++++++++++*******************************************************************************++++++++*#############################################################################################+++++++++++++++*********###################******************+++**********************************+++++++++++++++++##################++++======================================================++++++++++++++++++++++++++++++*************************************************************************************#*****#############################*###**+========================================================================================++++++++++++++++++++++++++++++++++*####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%################################################################################################******************************######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%#####*******++++++============++***********%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################################################################################################################################****######################################################################################################################################################################################
*********************************************************************************************************#########################################################*********************************************************************************************************************************************************+************************************************************************************************************++++++++++++++++++**************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************+++=--::::::::::::::::::::::::::::::::-*#####################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================++++++++============================================================================================================+**********+++**###############*************########********************************************************##********++=::=#######################*##%%#######################################################################%%%%%%%%###################################################################################################################################################%######*+:::::::::::::::--------::::::::::::::::=+++++++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++===++++++++++***************###++++++++++*******************************************************************************++++++**#############################################################################################*++++++++++++++*********###################******************+++**********************************++++++++++++++++++##################++++======================================================++++++++++++++++++++++++++++++********************************************************************************************############################*##**+==============================================================================+==========+++++++++++++++++++++++++++++++++*#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%###############################################################################################*******************************#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%#####*******++++++============++***********%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################*******####################################################################################################################################################################################
**********************************************************************************************************#########################################################*********************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************+++=--:::::::::::::::::::::::::::::::::-#####################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================+++++++============================================================================================================++**********+++**###############************#########*******************************************************#*********++=-:*####################################################################################################%%%%%%%%##########################################################################################################################################################*-::::::::::::::--------::::::::::::::::-+++++++++++++++++++===========================++++++++++++++++++++++++++++++++++++++++++===+++++++++++**************##*+++++++++********************************************#*********************************+++++++*#############################################################################################*++++++++++++++**********##################*******************************************************+++++++++++++++++++##################*+++======================================================+++++++++++++++++++++++++++++++********************************************************************************************########********###***##*##***+=========================================================================================+++++++++++++++++++++++++=+++++++*#####**********##*#####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%##%#############################################################################################*******************************############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%####*******++++++============++**********#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@%%########%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################********####################################################################################################################################################################################
**********************************************************************************************************##########################################################********************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****************************************************+++=--::::::::::::::::::::::::::::::::::-####################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++==================================================+==++++=============================================================================================================+**********+++*#################***********#########*****************************************************#**********+++--*####################################################################################################%%%%%%%%###########################################################################################################################################################=:::::::::::::::-------:::::::::::::::::+++++++++++++++++++===========================+++++++++++++++++++++++++++++++++++++++++++=++++++++++++++************###*++++++++*****************************************************************************+++++++*##############################################################################################*+++++++++++++**********##################*******************************************************++++++++++++++++++++*#################*+++======================================================+++++++++++++++++++++++++++++++********************************************************************************************########********#**###**#**#*+==========================================================================================++++++++++++++++++++++++++++++++**##**************#*####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################*********************************###########**###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%####*******++++++============+++*********#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@%%#########%%%%%%%%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################********####################################################################################################################################################################################
***********************************************************************************************************##########################################################******************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************+++=--:::::::::::::::::::::::::::::::::::-###################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================+++==============================================================================================================+**********+++*#################**********##########***************************************************##**********+++-=######################################################################################################%%%%%%%###########################################################################################################################################################*::::::::::::::::----:::::::::::::::::::=+++++++++++++++++++===========================++++++++++++++++++++++++++++++++++++++++++++++==++++++++++************##*++++++++****************************************************************************+++++++###############################################################################################*+++++++++++++***********#################*******************************************************+++++++++++++++++++++*#################*++++=====================================================+++++++++++++++++++++++++++++++*************************************************************************************************************##***##*#**+===========================================================================================+++++++++++++++++++++++++++++++*******************######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################*********************************############*########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%####*******++++++=======--===+++*********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********####################################################################################################################################################################################
************************************************************************************************************############################################################*********************************************************************************************************************************************************************+*****************************************************************************************++++++++++++++++++++++**********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************+++=--::::::::::::::::::::::::::::::::::::-##################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================++*===============================================================================================================+***********++*#################**********##########*************************************************##***********+++=*######################################################################################################%%%%%%%############################################################################################################################################################=::::::::::::::::---:::::::::::::::::::-+++++++++++++++++++============================++++++++++++++++++++++++++++++++++++++++++++++==+++++++++++***********#*++++++++****************************************************************************++++++*###############################################################################################*++++++++++++***********#################*******************************************************++++++++++++++++++++++*#################*++++======================================================++++++++++++++++++++++++++++++*************************************************************************************************************###*##*#*+=============================================================================================+++++++=++++++++++++++++=+++=+********************######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%################################################################################################**********************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%####*******++++++=====----====++*********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********####################################################################################################################################################################################
************************************************************************************************************#############################################################********************************************************************************************************************************************************************+*****************************************************************************************++++++++++++++++++++++*********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************++++=--:::::::::::::::::::::::::::::::::::::-*################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================++*+===============================================================================================================+***********++*#################*********###########************************************************#************++++#######################################################################################################%%%%%%%%############################################################################################################################################################:::::::::::::::::::::::::::::::::::::::+++++++++++++++++++=============================+++++++++++++++++++++++++++++++++++++++++++++====++++++++++++********#*+++++++****************************************************************************++++++*###############################################################################################*++++++++++++***********#################*******************************************************+++++++++++++++++++++++*#################*++++======================================================++++++++++++++++++++++++++++++************************************************************************************************************#**##*##*+==============================================================================================++++++==+++++++++++++++++++=+*********************#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%###########################################################################################***********************************#####################%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%%%%#####******++++++=====-----===++*********%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********####################################################################################################################################################################################
************************************************************************************************************###############################################################******************************************************************************************************************************************************************++****************************************************************************************+++++++++++++++++++++++********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************++++=--::::::::::::::::::::::::::::::::::::::-*###############################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================++*+================================================================================================================+************+*##################******#############**********************************************##***********++++*#######################################################################################################%%%%%%%%%##########################################################################################################################################################%+::::::::::::::::::::::::::::::::::::::=+++++++++++++++++++============================++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++******+++++++***************************************************************************++++++*#*##############################################################################################++++++++++++************################******************************************************++++++++++++++++++++++++++##################++++======================================================++++++++++++++++++++++++++++++************************************************************************************************************###*##**================================================================================================++++++==++++++++++++++++++++**********************#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%###########################################################################################**********************************######################%%%%%%%%%%%%%%%%#############################################################%%%%%%%%#####*******+++++====------===++*********%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********###################################################################################################################################################################################
*************************************************************************************************++*********#################################################################*************************************************************************************************************************************************************+++++***************************************************************************************++++++++++++++++++++++++********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****************************************++++=--::::::::::::::::::::::::::::::::::::::::*##############################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################************+*+++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================+++*+================================================================================================================++***********+**#################****##############*********************************************##************+++*#########################################################################################################%%%%%%%%#########################################################################################################################################################%##-:::::::::::::::::::::::::::::::::::::-+++++++++++++++++++=============================+++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++***+++++++**************************************************************************++++++*################################################################################################*+++++++++++************################******************************************************+++++++++++++++++++++++++++##################++++======================================================+++++++++++++++++++++++++++++++************************************************************************************************************#**#*+=================================================================================================+++++===++++++++++++++++++***********************##*###%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%###########################################################################################*********************************#######################%%%%%%%%%%###################################################################%%%%%%%%#####*******+++++====------===++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********###################################################################################################################################################################################
*************************************************************************************************+++++******##################################################################************************************************************************************************************************************************************+++++***************************************************************************************++++++++++++++++++++++++********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************++++=--:::::::::::::::::::::::::::::::::::::::::+#############################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################************+*+++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================+++*+==================================================================================================================+*************##################*#################********************************************#************+*++*#########################################################################################################%%%%%%%%%###########################################################################################################################################################*:::::::::::::::::::::::::::::::::::::-+++++++++++++++++++=============================++++++++++++++++++++++++++++++++++++++++++++++=========+++++++++++++**+++++++**************************************************************************+++++*#*###############################################################################################+++++++++++************################******************************************************++++++++++++++++++++++++++++##################++++======================================================+++++++++++++++++++++++++++++++***********************************************************************************************************#*##*+==================================================================================================+++++===+++++++++++++++++************************######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%###########################################################################################*********************************#########%##############%%%%%%###################************#######################################%%%%%%%%#####*******+++++===-------===++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#######################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********###################################################################################################################################################################################
**********************************************************************************************+++++++********#################################################################************************************************************************************************************************************************************+++++***************************************************************************************++++++++++++++++++++++++********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************+++=--::::::::::::::::::::::::::::::::::::::::::+############################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================+++**===================================================================================================================+*************####################################******************************************#************+*++*##########################################################################################################%%%%%%%%%############################################################################################################################################################=:::::::::::::::::::::::::::::::::::::=+++++++++++++++++++==============================+++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++*++++++*************************************************************************+++++*#################################################################################################*+++++++++++***********################*****************************************************++++++++++++++++++++++++++++++*#################+++++======================================================++++++++++++++++++++++++++++++****************************************************************************************************##*##*#****+====================================================================================================+++++====+++++++=+=++++************************#*####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%###########################################################################################**********************************#######%%%%%#################################******************#####################################%%%%%%%%#####*******+++++===-------===++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********###################################################################################################################################################################################
*********************************************************************************************+++++++++*******#################################################################************************************************************************************************************************************************************+++++***************************************************************************************++++++++++++++++++++++++********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**********************************+++=--:::::::::::::::::::::::::::::::::::::::::::=###########################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================+++**+===================================================================================================================+*************####################################****************************************##***************+*############################################################################################################%%%%%%%#############################################################################################################################################################-::::::::::::::::::::::::::::::::::::-+++++++++++++++++++==============================++=+==++++++++++++++++++++++++++++++++++++++++=--========++++++++++++++++++************************************************************************+++++*#*###############################################################################################*++++++++++***********#################*****************************************************+++++++++++++++++++++++++++++++*#################+++++======================================================++++++++++++++++++++++++++++++***************************************************************************************************#***##**#*++======================================================================================================++++===+++++++=+=++++*************************#*####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%##########################################################################################**********************************######%%%%%%%##########################*************************#####################################%%%%%%%%#####*******+++++===-------===++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********###################################################################################################################################################################################
*********************************************************************************************+++++++++*******##################################################################***********************************************************************************************************************************************************+++++***************************************************************************************+++++++++++++++++++++++*********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************+++=--::::::::::::::::::::::::::::::::::::::::::::-*%########################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################************+++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================++++*+====================================================================================================================+*************####################################***************************************#***************+*#############################################################################################################%%#%%%%############################################################################################################################################################%+::::::::::::::::::::::::::::::::::::-++++++++++++++++++++====================================++++++++++++++++++++++++++++++++++++++++=------=====++++++++++++++++***********************************************************************+++++*#*################################################################################################*+++++++++***********#################***************************************************++++++++++++++++++++++++++++++++++*#################+++++======================================================+++++++++++++++++++++++++++++++****************************************************************************************************##***#*+=========================================================================================================++===++++++++++++++**************************#*####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%##########################################################################################**********************************######%%%%%%#####################********************************####################################%%%%%%%%#####*******+++++===-------===++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********###################################################################################################################################################################################
****************************************************************++++++++++++++++************++++++++++*******##################################################################***********************************************************************************************************************************************************+++++***************************************************************************************+++++++++++++++++++++++*********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************+++=--:::::::::::::::::::::::::::::::::::::::::::::-+########################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================++++**======================================================================================================================+***********#####################################*************************************#****************+##############################################################################################################%%#%%%%###########################################################################################################################################################%##-::::::::::::::::::::::::::::::::::::=+++++++++++++++++++========================================+++++++++++++++++++++++++++++++++++++=------=====+++++++++*++++++*********************************************************************+++++*#*#*###############################################################################################+++++++++***********#################**************************************************+++++++++++++++++++++++++++++++++++++#################++++++=====================================================+++++++++++++++++++++++++++++++****************************************************************************************************##****+===============================================================================================================+++++++++=+++*************************########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%##########################################################################################**********************************###################****#####*************************************#####################################%%%%%%%#####*******+++++===-------==+++********%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********##################################################################################################################################################################################
*************************************************************+++++++++++++++++++++++++++++++++++++++++*******###################################################################**********************************************************************************************************************************************************+++++***************************************************************************************+++++++++++++++++++++++*********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************+++=--:::::::::::::::::::::::::::::::::::::::::::::::=#######################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================++++**+======================================================================================================================+***********#####################################***********************************##+****************##############################################################################################################%%#%%%%########################################################################################################################################################%####%*:::::::::::::::::::::::::.::::::::::-+++++++++++++++++++==========================================+++++++++++++++++++++++++++++++++++==------=====+++++++++++++++********************************************************************+++++*#*#*###############################################################################################*++++++++***********#################**************************************************++++++++++++++++++++++++++++++++++++++#################++++++=====================================================+++++++++++++++++++++++++++++++**************************************************************************************************##*****+===========================================================================================================++===+++++++++++++*************************########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%#########################################################################################***********************************##################************************************************####################################%%%%%%%#####********++++===-------==+++********%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********##################################################################################################################################################################################
************************************************************++++++++++++++++++++++++++++++++++++++++++*******####################################################################*********************************************************************************************************************************************************+++++***************************************************************************************++++++++++++++++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##************************+++=--::::::::::::::::::::::::::::::::::::::::::::::::-*#####################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================++++**+=======================================================================================================================+***********####################################**********************************##***************+*###############################################################################################################%%%%%%%############################################################################################################################################################%##=:::::::::::::::::::::::...:::::::::-++++++++++++++++++++==========================================++++++++++++++++++++++++++++++++++++=------=====++++++++++++++***********************+++++****************************************++++##*#################################################################################################*+++++++************#################*************************************************++++++++++++++++++++++++++++++++++++++++*################*+++++=====================================================++++++++++++++++++++++++++++++++*************************************************************************************************#*##*++============================================================================================================++++=+++++++++=++*************************#########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##########################################################################################*************************************###############**************************************************####################################%%%%%%%#####********++++===-------==++*********%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********##################################################################################################################################################################################
***********************************************************+++++++++++++++++++++++++++++++++++++++++++*******#####################################################################********************************************************************************************************************************************************+++++**************************************************************************************+++++++++++++++++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************+++=--::::::::::::::::::::::::::::::::::::::::::::::::::+#%##################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================++++***========================================================================================================================+**********#####################################*********************************#******************################################################################################################################%%%#%%##############################################################################################################################################################%*:::::::::::::::::::::::....:::::::::=+++++++++++++++++++==============+=======================+===+++++++++++++++++++++++++++++++++++++=------====+++++++++++++++**********************+++++***************************************+++**####################################################################################################+++++++************#################*************************************************+++++++++++++++++++++++++++++++++++++++++*################*+++++=====================================================+++++++++++++++++++++++++++++++++*************************************************************************************************#**+=============================================================================================================+++++++++++++++++*************************##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################**************************************############*****************************************************####################################%%%%%%%#####********++++===-------==++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********##################################################################################################################################################################################
***********************************************************+++++++++++++++++++++++++++++++++++++++++++*******#######################################################################******************************************************************************************************************************************************+++++*************************************************************************************++++++++++++++++++++++++**********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************+++=--:::::::::::::::::::::::::::::::::::::::::::::::::::=###################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================+++***+========================================================================================================================+*********######################################*******************************##+****************#################################################################################################################%%%#%%########################################################################################################################################################%##%####=::::::::::::::::::::::....:::::::::=+++++++++++++++++++==============++======================+====+++++++++++++++++++++++++++++++++++++=------=====+++++++++++++***********************++++**************************************+++**####################################################################################################*+++++++***********#################*************************************************++++++++++++++++++++++++++++++++++++++++++*################*+++++======================================================++++++++++++++++++++++++++++++++*************************************************************************************************#*+==============================================================================================================++++++++++++++++*************************###########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################****************************************######*********************************************************####################################%%%%%%%%####********++++====------==++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********##################################################################################################################################################################################
***********************************************************+++++++++++++++++++++++++++++++++++++++++++*******#########################################################################****************************************************************************************************************************************************+++++************************************************************************************+++++++++++++++++++++++++***********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****************+++=--::::::::::::::::::::::::::::::::::::::::::::::::::::-#################%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================+++***+========================================================================================================================++*********######################################***************************+**#*****************##################################################################################################################%%##%%%##############################################################################################################################################################%*:::::::::::::::::::::.......:::::::-++++++++++++++++++++==============*===============================++==++++++++++++++++++++++++++++++=-:----====+++++++++++++*************************+**************************************+++**#####################################################################################################+++++++***********#################**************************************************+++++++++++++++++++++++++++++++++++++++++++#################+++++======================================================++++++++++++++++++++++++++++++++**********************************************************************************************#*#*+=============================================================================================================+++++++++++++++++**************************##########%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%######################################################################################*******************************************************************************************************#####################################%%%%%%%%####********++++====------==++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#################################################################################################################################################################################
***********************************************************+++++++++++++++++++++++++++++++++++++++++++*******############################################################################*************************************************************************************************************************************************+++++************************************************************************************+++++++++++++++++++++++++***********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##************++++==-:::::::::::::::::::::::::::::::::::::::::::::::::::::=#####%##########%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================++++***=========================================================================================================================+*********######################################***********************+*+*+*#******************###################################################################################################################%%#%%%###############################################################################################################################################################%=::::::::::::::::::::.......::::::::++++++++++++++++++++==============++==============================+==++++++++++++++++++++++++++++++++=-:-----====+++++++++++****************************************************************++***####################################################################################################*+++++++**********#################*************************************************+++++++++++++++++++++++++++++++++++++++++++++#################+++++======================================================+++++++++++++++++++++++++++++++++******************************************************************************************#***#*+==============================================================================================================+++++++++++=++++***************************##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#####################################################################################********************************************************************************************************######################################%%%%%%#####********++++====------==++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#################################################################################################################################################################################
**********************************************************++++++++++++++++++++**++++++++++++++++++++++*******##############################################################################************************************************************************************************************************************************++++***********************************************************************************++++++++++++++++++++++++++***********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**********+++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::=#####%#########%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================++++***+=========================================================================================================================**********######################################***********************+***#*+****************####################################################################################################################%%%%%%###############################################################################################################################################################%#:::::::::::::::::::.........:::::::=++++++++++++++++++++==============++================================++++++++++++++++++++++++++++++++++-:-----=======+++++++**************************************************************+++*#######################################################################################################+++++++**********#################***********************************#######*******++++++++++++++++++++++++++++++++++++++++++++++#################+++++======================================================+++++++++++++++++++++++++++++++++++******************************************************************************************#*++================================================================================================================++++++++=+++=+****************************##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#%###################################################################*************###*********************************************************************************************************#####################################%%%%%%#####********+++++===------==++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#################################################################################################################################################################################
***********************************************************+++++++++++++++++*******+++++++++++++++++++*******################################################################################****************************************************************************************************************************++****************++++***********************************************************************************++++++++++++++++++++++++++***********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##******++++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::=#%###%########%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%###############################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================++++***+=========================================================================================================================+**********######################################**********************+*+##+****************#####################################################################################################################%%%%%%################################################################################################################################################################%=:::::::::::::::::..........:::::::-++++++++++++++++++++===============++=================================+++++++++++++++++++++++++++++++++-:::---=========++++**************************************************************++*#######################################################################################################*+++++++********##################***********************************#########*****+++++++++++++++++++++++++++++++++++++++++++++++#################++++++=====================================================+++++++++++++++++++++++++++++++++++++***************************************************************************************#*+================================================================================================================+=+++++++++++++*****************************##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#%###################################################***************************#####*********************************************************************************************************#####################################%%%%%%#####********+++++===------==++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#################################################################################################################################################################################
*************************************************************+++++++++++++++*********+++++**++++++++++*******#################################################################################***************************************************************************************************************************++*****************++************************************************************************************+++++++++++++++++++++++++************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****+++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%###########%%%####%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%###############################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================+++++***==========================================================================================================================+**********######################################********************+*+*#*+**********+*****######################################################################################################################%%#%%%#################################################################################################################################################################::::::::::::::::...........:::::::-++++++++++++++++++++================+============================+====++++++++++++++++++++++++++++++++++-:::----==========++************************************************************++*#######################################################################################################*++++++*********##################***********************************###########**+++++++++++++++++++++++++++++++++++++++++++++++++*################++++++=====================================================++++++++++++++++=======+++++++++++++++++++++++**++++********************+++**************************************************+================================================================================================================++++++++++++=++******************************##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################********************************#####*********************************************************************************************************#####################################%%%%%%#####********+++++===------==++********#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********#################################################################################################################################################################################
************************************************************************++*******************++++++*++*******###################################################################################**************************************************************************************************************************+******************+************************************************************************************+++++++++++++++++++++++++************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**++==-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-*%%%########%%%####%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%###############################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================+++++***+=========================================================================================================================+************#####################################***************++++++*#*+*+**************#######################################################################################################################%%%%%%%################################################################################################################################################################=:::::::::::::::.............::::::+++++++++++++++++++++================+======================+====+=====++++++++++++++++++++++++++++++++++-::::---==========+**********************************************************+++*########################################################################################################*+++++*********##################************************************###%%%%####**+++++++++++++++++++++++++++++++++++++++++++++++++*################++++++=====================================================+++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+================================================================================================================+++++++++++++++*******************************##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%########################%####################***********************************####**********************************************************************************************************####################################%%%%%%#####********+++++===------==++********#%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********#################################################################################################################################################################################
*********************************************************************************************++++++*++*******####################################################################################*************************************************************************************************************************+******************+************************************************************************************+++++++++++++++++++++++++************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*#%########%@%####%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================+++++***+==========================================================================================================================+*************###################################******++++++++*++++++*#+**++*******+****########################################################################################################################%%%%%%%#############################################################################################################################################################%##*::::::::::::::...............:::::=++++++++++++++++++++=================+==================++++++========+++++++++++++++++++++++++++++++++++-::::-===========+**********************************************************+**#*#######################################################################################################++++++********##################*************************************#%%%%%%%%###*++++++++++++++++++++++++++++++++++++++++++++++++++################++++++======================================================++++++++++================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+================================================================================================================++++++++++++++**********************************#########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%#######################%%%%%%%##############*************************************###******************************************************************************************************************************#################%%%%%#####********+++++===------==++********#%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%#######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********#################################################################################################################################################################################
*********************************************************************************************++++++*++*******####################################################################################********************************************************************************************************************************************+************************************************************************************+++++++++++++++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+#%#######%@%#%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%##############################################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================+++++***+===========================================================================================================================+**************##################################*****++++++++*+++++*#*++++++******+****#########################################################################################################################%%%%%%#################################################################################################################################################################-::::::::::::.................::::-++++++++++++++++++++====================================++++++++===+==++++++++++++++++++++++++++++++++++++-:::============+*********************************************************+**#*#######################################################################################################*++*+*********##################*************************************##%%%%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++################++++++======================================================++++++++===================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+=================================================================================================================+++++++++++++***********************************#########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%#######################%%%%%%%%##%##########************************************************************************************************************************************************************************###############%%%%%#####********+++++===------==++********#%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################************################################################################################################################################################################################
************************************************************************************************++++++******######################################################################################********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+-::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%######%%%%#%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================+++++****============================================================================================================================+***************################################****+**++++++++++++#*+++*++++*********###########################################################################################################################%%%%%############################################################################################################################################################%###%+:::::::::::::.................::::+++++++++++++++++++++====================================++++++=========+++++++++++++++++++++++++++++++++++================+*******************************************************+**##########################################################################################################**+*********###################**************************************#%%%%%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++################+++++++=====================================================+++++++======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+*++=============================================================================================================+===++++++=+++++***************************************#######%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################%%#%%%%%%%###########**************************************************************************************************************************************************************************#############%%%%%#####********+++++===------==++********%%@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@########################################################################################################################################################################################################################################################################################################################################################################################################################################################################************################################################################################################################################################################################
************************************************************************************************+++*++******######################################################################################********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*+-::::::::::::::::::::::::::::::::::::::::::::::::::::::+#%###%%%%%#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%##******#####################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================+++++***++============================================================================================================================+****************###############################***++++++++++++++*#*+++++++++++++****###########################################################################################################################%%%#%%#################################################################################################################################################################:::::::::::::.................::::+++++++++++++++++++++=====================================++++++=++=====++++++++++++++++++++++++++++++++++++===============+*********************************************************###########################################################################################################***********###################***************************************#%%%%%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++*###############+++++++=====================================================+++++++======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+================================================================================================================++==+++++++=++*********************************************##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################%%%%%%%%%%%##########****************************************************************************************************************************************************************************###########%%%%######********+++++===------==++********%%@@@@@@@@@@@@@@@@@@@@@@@%#**********#####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################************################################################################################################################################################################################
************************************************************************************************+++*++******######################################################################################********************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*=-:::::::::::::::::::::::::::::::::::::::::::::::::::-*#%##%@%%#%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================++++++*+++=============================================================================================================================+*****************##############################***++++++++++++*#*+++++++++++++++**#############################################################################################################################%%#%%%###############################################################################################################################################################%=:::::::::::....................::=+++++++++++++++++++++========+===========================+++++++++++====++++++++++++++++++++++++++++++++++++==============+********************************************************###########################################################################################################***********###################****************************************#%%%%%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++*###############+++++++======================================================+++++=======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================++++++=+==++***********************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################%%%%%%%%%%%##########******************************************************************************************************************************************************************************#########%%%%######********+++++===------==++*******#%%@@@@@@@@@@@@@@@@@@@@@@@%************####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################************################################################################################################################################################################################
*************************************************************************************************++**+******######################################################################################********************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++*************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############++-:::::::::::::::::::::::::::::::::::::::::::::::::-*##%@%%#%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################*****########################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================++++++*++*==============================================================================================================================+*******************#******************####*###****+++++++++++**+++++++++++++++**################################################################################################################################%%%%###############################################################################################################################################################%*::::::::::......................:-+++++++++++++++++++++========+============================+++++++++++===+++++++++++++++++++++++++++++++++++++=============++******************************************************############################################################################################################**********###################******************************************%%%@@%%%%%##+++++++++++++++++++++++++++++++++++++++++++++++++++*###############*++++++======================================================+++++=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+===================================================================================================================++===++=++*************************************************##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################%%%%%%%%############*******************************************************************************************************************************************************************************#########%%#######********+++++====-----==++*******#%%@@@@@@@@@@@@@@@@@@@@@@@#*************###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################************################################################################################################################################################################################
*************************************************************************************************+**********######################################################################################*********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++*************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*+--:::::::::::::::::::::::::::::::::::::::::::::::=%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################********#######################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================++++++*++*+==============================================================================================================================+***************************************************++++++++**+++++++++++++++***################################################################################################################################%%%##################################################################################################################################################################-:::::::.........................-+++++++++++++++++++++========++============================++++++++++++=+++++++++++++++++++++++++++++++++++++++===========++++***************************************************############################################################################################################**********##################********************************************#%%%@%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++*###############*+++++++=====================================================++++++======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++===================================================================================================================++++++++++**************************************************##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################**********************************************************************************************************************************************************************************################********+++++====-----==++********%%%@@@@@@@@@@@@@@@@@@@@@%#************###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###############################################################################################################################################################################
************************************************************************************************************######################################################################################*********************************************************************************************************************************************************************************************************************************+++++++++++++++++++++*************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*+=-:::::::::::::::::::::::::::::::::::::::::::-%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################************######################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================++++++*++*+===============================================================================================================================++***************************************************++++++**+++++++++++++++**##################################################################################################################################%%#############################################################################################################################################################%####=..:::.::........................:++++++++++++++++++++++========+============================+++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++****************************************************############################################################################################################********###################*********************************************#%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++###############*+++++++=====================================================++++++++===================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++===================================================================================================================+==++++++****************************************************##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################************************************************************************************************************************************************************************************###############********+++++====-----==++********%%%@@@@@@@@@@@@@@@@@@@@@%#***********####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###############################################################################################################################################################################
************************************************************************************************************######################################################################################**********************************************************************************************************************************************************************************************************************************++++++++++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*+=-:::::::::::::::::::::::::::::::::::::::-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############******************####################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================++++++*++**================================================================================================================================++***************************************************++++**+++++++++++++++***##################################################################################################################################%%##################################################################################################################################################################*:..:..::.............  ..........=+++++++++++++++++++++========+=============================+++++++++++++++++++++++++++++++++++++++++++++++++++++=========+++*+**************************************************###########################################################################################################********###################***********************************************%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++################+++++++=====================================================+++++++++++===============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++==================================================================================================================+++++==+++*****************************************************##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################****************************************************************************************************************************************************************************************##############*********+++++===-----===++*******#%%@@@@@@@@@@@@@@@@@@@@@%***********####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###############################################################################################################################################################################
************************************************************************************************************######################################################################################***********************************************************************************************************************************************************************************************************************************+++++++++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**+=-:::::::::::::::::::::::::::::::::-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*************************###################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================+++++++*+**=================================================================================================================================++***************************************************+++*++++++++++++++++**####################################################################################################################################%%#############################################################################################################################################################%##%#-:.::.:.............    . .......=++++++++++++++++++++++=======++=============================+++++++++++++++++++++++++++++++++++++++++++++++++++++========+++*++**************************************************##########################################################################################################*******###################**********************************************+*%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++################+++++++=====================================================++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+===================================================================================================================++++==++*******************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################******************************************************************************************************************************************************************************************##############*********+++++===-----===++*******#%%@@@@@@@@@@@@@@@@@@@@@%**********#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###############################################################################################################################################################################
************************************************************************************************************######################################################################################***********************************************************************************************************************************************************************************************************************************++++++++++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################**+=-::::::::::::::::::::::::::::-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*****************+++++++++********#################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================++++++++++*+=================================================================================================================================++**************************************************++**+++++++++++++++***####################################################################################################################################%###################################################################################################################################################################+::..::::...........        .....-++++++++++++++++++++++========+==========================+===+++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++*****************************************#******#########################################################################################################*******###################***********************************************+*#%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++################+++++++======================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+*=======================================================================================================================+=+++*******************************************************##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###****************##################*********************************************************************************************************************************************************************************************############**********+++++===-----===++*******#%%@@@@@@@@@@@@@@@@@@@@%#*********######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###############################################################################################################################################################################
************************************************************************************************************######################################################################################************************************************************************************************************************************************************************************************************************************+++++++++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################**+=---::::::::::::::::::::-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##########################****************+++++++++++++********###############******++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================++++++++++*+==================================================================================================================================++****************************************************++++++++++++++++**#####################################################################################################################################%###################################################################################################################################################################*:::::..:...........          .. :++++++++++++++++++++++========+=============================+=+++++++++++++++++++++++++++++++++++++++++++++++++++++======+++++++++***************************************##*******#######################################################################################################*******###################********************************************+*+++*#%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++################+++++++======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+=================================================================================================================++=++==++*******************************************************####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##**********************#########*************************************************************************************************************************************************************************************************############***********++++===------==++*******#%%%@@@@@@@@@@@@@@@@@@@%#*******########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###############################################################################################################################################################################
************************************************************************************************************######################################################################################*************************************************************************************************************************************************************************************************************************************+++++++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################**++===--:::::::::::-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################****************++++++++++++++************###########******++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================+++++++++**====================================================================================================================================+**************************************************++++++++++++++++**######################################################################################################################################%####################################################################################################################################################################-::.::.............             .+++++++++++++++++++++++=======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++======++++++++++***************************************##******#######################################################################################################*****####################*********************************************++++++*#%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++################+++++++======================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+=================================================================================================================+=====+++*******************************************************#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*********************************************************************************************************************************************************************************************************************************###########************++++===------==++*******#%%%@@@@@@@@@@@@@@@@@@@%#*****#########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###############################################################################################################################################################################
***********************************************************************************************************#######################################################################################*************************************************************************************************************************************************************************************************************************************+++++++++++++++************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################**************+++++++++++++++++*************########*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================+++++++++**=====================================================================================================================================+*************************************************++++++++++++++++**######################################################################################################################################%%###################################################################################################################################################################=.:.::.............              =++++++++++++++++++++++===================================+====+++++++++++++++++++++++++++++++++++++++++++++++++++++=====+++++++++++***************************************#*******#####################################################################################################*****###################**********************************************+++++++*#%%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++################++++++++=====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================+=++=++*********************************************************#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%**********************************************************************************************************************************************************************************************************************************#########**************++++===------==+++******#%%%@@@@@@@@@@@@@@@@@@%%*****##########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************##############################################################################################################################################################################
***********************************************************************************************************#######################################################################################****************++********************************************************************************************************************************************************************************************************************+++++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################****************++++++++++++++++++***************######*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================+++++++*+**+=====================================================================================================================================+************************************************+++++++++++++++**#*#####################################################################################################################################%%###################################################################################################################################################################*:.:::.............              -+++++++++++++++++++++++===============++=================++====++++++++++++++++++++++++++++++++++++++++++++++++++++====+++++++++++++**************************************#*******#####################################################################################################****###################**********************************************++++++++*#%%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++################++++++++=+===================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================++++***********************************************************#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**********************************************************************************************************************************************************************************************************************************#########**************++++===------===++******#%%%%@@@@@@@@@@@@@@@@%%%****###########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************##############################################################################################################################################################################
***********************************************************************************************************######################################################################################***************+++++*******************************************************************************************************************************************************************************************************************+++++++++++++*************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%###########################***************+++++++++++++++++++++******************##*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================++++*******+======================================================================================================================================+***********************************************+++++++++++++++*#**#####################################################################################################################################%#####################################################################################################################################################################:.:::.............              :+++++++++++++++++++++++==============+++=================+++==++++++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++*************************************##*******###################################################################################################***####################*********************************************++++++++++**#%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++################++++++++=+===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================================================+++====+=++************************************************************#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***********************************************************************************************************************************************************************************************************************************#######****************+++===------===++******##%%%%%%@@@@@@@@@@@@%%%#****##########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************##############################################################################################################################################################################
***********************************************************************************************************######################################################################################**************++++++*******************************************************************************************************************************************************************************************************************+++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%###############%###%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%##########################*************++++++++++++++++++++++++*****************##********++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================++++********=======================================================================================================================================+*********************************************+++++++++++++++******##########################################################################################################################################################################################################################################################################################################=.:.::.............             .++++++++++++++++++++++++========+====++++================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====+++++++++++++++*************************************##******##################################################################################################***###################**********************************************+++++++++++**#%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++###############*++++++++======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================================================++==++=+**+***********************************************************#####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********************************************************************************************************************************************************************************************************************************#######****************+++===------===++*******#%%%%%%%%%%@@@@%%%%%%%*****##########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************##############################################################################################################################################################################
***********************************************************************************************************######################################################################################**************++++++*******************************************************************************************************************************************************************************************************************+++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%#%%%#%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%###########################*************+++++++++++++++++++++++++************+++*##*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================++*+********========================================================================================================================================+********************************************+++++++++++++++********########################################################################################################################################################################################################################################################################################################+...:..............             .++++++++++++++++++++++++========+====++++=================+++++++++++++++++++++++++++++++++++++++++++++++++++++++======++++++++++++++++*************************************#******#################################################################################################***###################**********************************************+++++++++++++*#%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++###############*+++++*++======================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================+++++++***************************************************************#####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%************************************************************************************************************************************************************************************************************************************#######****************+++===-------==++********#%%%%%%%%%%%%%%%%%%##*****##########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************##############################################################################################################################################################################
***********************************************************************************************************######################################################################################*************++++++++******************************************************************************************************************************************************************************************************************++++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%#%%%%%%%############################****************++++++++++++++++++++++++**********+++++*#**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++================================+*++********+=======================================================================================================================================++******************************************+++++++++++++++*********########################################################################################################################################################################################################################################################################################################*::::.:............              =+++++++++++++++++++++++========++===+++++================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++++************************************##******###############################################################################################**####################**********************************************++++++++++++++*#%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++###############*++++***++=====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++=============================================================================================================++===+==++******************************************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#************************************************************************************************************************************************************************************************************************************#######****************+++===-------==++********###%%%%%%%%%%%%%%%%#*++***##########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************#############################################################################################################################################################################
***********************************************************************************************************############################*########################################################**************++++++++******************************************************************************************************************************************************************************************************************++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*##%%%%%%%%%%###########################****************+++++++++++++++++++++++++*******+++++++*#*+*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================+**+********+========================================================================================================================================++****************************************+++++++++++++++***********########################################################################################################################################################################################################################################################################################################-..:::............              =++++++++++++++++++++++++========++==+++++=================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++++***********************************##******##############################################################################################**####################**********************************************++++++++++++++++#%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++###############*+++*****+=====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================+==++=======++*+******************************************************************####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************************#######****************++++==-------==++*********####%%%%%%%%%%%%##*+++***##########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************#############################################################################################################################################################################
***********************************************************************************************************###########################****######################################################**************++++++++******************************************************************************************************************************************************************************************************************+++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*####%%%%###############################****************+++++++++++++++++++++++++++***+++++++++*#*++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================+**+********+==========================================================================================================================================+***********************************+*+++++++++++++++++************#######################################################################################################################################################################################################################################################################################################=..::.............              :++++++++++++++++++++++++========++==++++++================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======++++++++++++++++**********************************##*****###################################################################################################################**********************************************+++++++++++++++++#%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############+++******+======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+***++===========================================================================================================+=======++***********************************************************************###%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*************************************************************************************************************************************************************************************************************************************#######*****************+++==-------===++*********#######%%%%%%###*++++***##########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************#############################################################################################################################################################################
***********************************************************************************************************##########################******#####################################################**************+++++++++*****************************************************************************************************************************************************************************************************************+++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***####################################****************++++++++++++++++++++++++++++++++++++++++**++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================++***********+==========================================================================================================================================+********************************+++++++=++++++++++++**************######################################################################################################################################################################################################################################################################################################+.::..............              .+++++++++++++++++++++++++========+===+++++================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++++**********************************##****#################################################################################################################**********************************************+++++++++++++++++++##%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############++*******+======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++===============================================================================================================++=+++**************************************************************************##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**************************************************************************************************************************************************************************************************************************************#######*****************+++===------===++***********#############*+++++***#########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################***************############################################################################################################################################################################
***********************************************************************************************************##########################*******####################################################*************+++++++++++*******************************************************************************************++++*****************************************************************************************************************+++++++++++***********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############****##################################****************++++++++++++++++++++++++++++++++++++++++**++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++=============================++***********+===========================================================================================================================================+******************************+++*+=++++++++++++++****************#####################################################################################################################################################################################################################################################################################################*:::..............              .+++++++++++++++++++++++++========++==++++++============++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====+++++++++++++++++**********************************##***################################################################################################################**********************************************++++++++++++++++++++##%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############*+********+======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++==============================================================================================================++=++++**+************************************************************************##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**************************************************************************************************************************************************************************************************************************************#######*****************+++===------===++********+++****######***+===++***#########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************############################################################################################################################################################################
***********************************************************************************************************##########################*******####################################################*************+++++++++++******************************************************************************************++++++****************************************************************************************************************+++++++++++***********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########********################################****************+*++++++++++++++++++++++++++++++++++++++***++++************++++++++++++++++++++++++++++++++++++++++++++++++++=============================+++**********+============================================================================================================================================+****************************+++*+=+++++++++++++++*****************#####################################################################################################################################################################################################################################################################################################-................               ++++++++++++++++++++++++++========+==+++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===+++++++++++++++++++********************************##****#############################################################################################################**********************************************++++++++++++++++++++++##%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############**********+=======================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+=================================================================================================================++**++***************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************************************************************************************************************************************************************#######*****************+++===-------==+++*******++++++********+==-==++***#########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************############################################################################################################################################################################
***********************************************************************************************************#########################*********###################################################*************+++++++++++******************************************************************************************++++++****************************************************************************************************************++++++++++************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############**********#############################****************+*++++++++++++++++++++++++++++++++++++++***++++*****************++++++++++++++++++++++++++++++++++++++++++++++============================+++**********+=============================================================================================================================================+**************************++++*+=+=++++++++++++*******************####################################################################################################################################################################################################################################################################################################=................               =+++++++++++++++++++++++++========++=+++++++==============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++*************************************############################################################################################################*********************************************++++++++++++++++++++++++##%%%##*+++++++++++++++++++++++++++++++++++++++++++++++++++++*#############***********+======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+=============================================================================================================+===++**+***+**+**********************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***************************************************************************************************************************************************************************************************************************************#######*****************+++===-------===++*******++====+++++++==---==++***#########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************############################################################################################################################################################################
***********************************************************************************************************#########################*********###################################################*************+++++++++++******************************************************************************************++++++****************************************************************************************************************++++++++++***********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############***********###########################****************+*++++++++++++++++++++++++++++++++++++++***++++********************+++++++++++++++++++++++++++++++++++++++++++============================+++***********+=============================================================================================================================================+***********************+++++*+=++=+++++++++++*********************###################################################################################################################################################################################################################################################################################################+.::..............              =++++++++++++++++++++++++++========+=++++++++=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************###########################################################################################################********************************************++++++++++++++++++++++++++##%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++*############************+======================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+================================================================================================================++**+******+************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***************************************************************************************************************************************************************************************************************************************#######*****************+++===-------===++*******++===---==--------==++***#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************############################################################################################################################################################################
***********************************************************************************************************#########################**********#################################################**************++++++++++++++**************************************************************************************+++++++****************************************************************************************************************++++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############**************#########################******************++++++++++++++++++++++++++++++++++++++***++++***********************+++++++++++++++++++++++++++++++++++++++++===========================++++***********==============================================================================================================================================+********************+++++++*++=++=+++++++=++**********************##################################################################################################################################################################################################################################################################################################*:.::.............              -++++++++++++++++++++++++++========++=+++++++=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************##########################################################################################################*******************************************++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++###########*************+=======================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+======================================================================================================+=++=====+++*******+****************************************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%****************************************************************************************************************************************************************************************************************************************########****************+++===--------==+++*****+++==--------------==++***#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************############################################################################################################################################################################
***********************************************************************************************************#########################**********#################################################**************++++++++++++++++************************************************************************************+++++++****************************************************************************************************************+++++++++***********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############*****************#######################******************++++++++++++++++++++++++++++++++++++++***++++**************************+++++++++++++++++++++++++++++++++++++++==========================++++***********+===============================================================================================================================================+******************++==++*++=+++=++==++=++***********************#################################################################################################################################################################################################################################################################################################%*::.:.............              -+++++++++++++++++++++++++++========+=++++++++============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************########################################################################################################********************************************+++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++##########**************+=======================================================++++++++++++++++++++++++++++++++++++++++++++++++*+**************************************+==============================================================================================================++++*************************************************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#****************************************************************************************************************************************************************************************************************************************########****************+++===--------===++*****+++==--------------==++***#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************############################################################################################################################################################################
**********************************************************************************************************##########################***********################################################*************++++++++++++++++++***********************************************************************************+++++++****************************************************************************************************************+++++++++**********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*******************######################****************+*++++++++++++++++++++++++++++++++++++++***++++*****************************++++++++++++++++++++++++++++++++++++==========================+++++***********================================================================================================================================================+*******************++++*+==+=+++===++=+************************###################################################################################################################################################################################################################################################################################################::.:.............              -++++++++++++++++++++++++++++=======+++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************######################################################################################################*******************************************+++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++#########***************+=+=====================================================+++++++++++++++++++++++++++++++++++++++++++********************************************+======================================================================================================+====+==+++***************************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*****************************************************************************************************************************************************************************************************************************************########****************+++===--------===++*****++===--------------==++***#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************############################################################################################################################################################################
**********************************************************************************************************##########################***********###############################################**************++++++++++++++++++++**********************************************************************************++++++****************************************************************************************************************++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############**********************######################***************++++++++++++++++++++++++++++++++++++++++****+++******************************+++++++++++++++++++++++++++++++++++++========================+++++***********+================================================================================================================================================++******************+++++++++=++=++++++************************###################################################################################################################################################################################################################################################################################################-..:.............              :++++++++++++++++++++++++++++========++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************###################################################################################################*******************************************+++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++########*****************+++====================================================+++++++++++++++++++++++++++++++++*****************************************************+==========================================================================================================+===++**++++***********************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*****************************************************************************************************************************************************************************************************************************************########*****************++===---------==+++****++===--------------==++***#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********#############################################################################################################################################################################
**********************************************************************************************************#########################*************##############################################**************++++++++++++++++++++**********************************************************************************++++++****************************************************************************************************************++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############***********************#####################***************+*++++++++++++++++++++++++++++++++++++++****++*********************************+++++++++++++++++++++++++++++++++++=========================++++************+===================+============================================================================================================================++*******************+=++==+=++=++=++**************************##################################################################################################################################################################################################################################################################################################=.::.............              .+++++++++++++++++++++++++++++=======+++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************##################################################################################################******************************************+++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++########*****************+=====+================================================+++++++++++++++++++++*************************************************************+**+=============================================================================================================+++**+******++*******************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************************************************************************************************************************************************************************************************************************************########*****************++===---------===++****++===--------------==++***#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********##############################################################################################################################################################################
**********************************************************************************************************########################**************##############################################**************++++++++++++++++++++++*********************************************************************************+++++****************************************************************************************************************++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############*************************#####################****************++++++++++++++++++++++++++++++++++++++****++**********************************+++++++++++++++++++++++++++++++++++========================+++++***********+===================+==============================================================================================================================+*******************+===+++++=+=++***************************#############################################################################################*####################################################################################################################################################################################################+.::.............              .+++++++++++++++++++++++++++++=======+++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************###############################################################################################******************************************+++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++#######******************++====+================================================++**********************************************************************************+====================================================================================================+===+====++**++******++********************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@#******************************************************************************************************************************************************************************************************************************************########*****************+++==---------===+++**+++===--------------==++***#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******################################################################################################################################################################################
**********************************************************************************************************#######################****************############################################***************+++++++++++++++++++++++********************************************************************************++++*****************************************************************************************************************+++++++**********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************************####################****************++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++++++++++=======================+++++************+==================+===============================================================================================================================+*******************+=++=++==+=++****************************##########################################################################################*****##################################################################################################################################################################################################*:::.............               ++++++++++++++++++++++++++++++======++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************#############################################################################################******************************************++++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++######*******************++=+===================================================+**********************************************************************************+============================================================================================================+++*******++**+*********************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************************************************************************************************************************************************########*****************+++==----------==++++++++==---------------==++***#########################################################################################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************#######################****************############################################***************+++++++++++++++++++++++*********************************************************************************++******************************************************************************************************************+++++++**********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############***************************#####################***************+++++++++++++++++++++++++++++++++++++**********************************************++++++++++++++++++++++++++++++++======================+++++*********+**+==================+================================================================================================================================++******************+=++++==+++*****************************#########################################################################################********################################################################################################################################################################################################*:.:.............               =++++++++++++++++++++++++++++++=====+++++++++++++=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************###########################################################################################*****************************************++++++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++#####********************++=+===================================================+*********************************************************************************+=========================================================================================================+==++************************************************************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@#*******************************************************************************************************************************************************************************************************************************************########*****************+++==-----------==+++++++==---------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************#########*******************************##########################################****************++++++++++++++++++++++++****************************************************************************************************************************************************************************************************+++++++*********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############****************************#####################**************+++++++++++++++++++++++++++++++++++***************************************************+++++++++++++++++++++++++++++======================++++++**********+*+================+++================================================================================================================================++******************+=+++++++*********************##*******################*******################################################################*************##############################################################################################################################################################################################:...............               =++++++++++++++++++++++++++++++=====++++++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************#######################################################################################******************************************+++++++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**********************=+====================================================+********************************************************************************+========================================================================================================+==++**************************************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@%#*******************************************************************************************************************************************************************************************************************************************#########****************+++==-----------==+++++++==---------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************#########*******************************##########################################****************+++++++++++++++++++++++++***************************************************************************************************************************************************************************************************++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############****************************#####################**************+++++++++++++++++++++++++++++++++++*********************************************+++*****++++++++++++++++++++++++++++=====================++++++************+================++++================================================================================================================================++******************+==+++++*******************####********###############************************####**#######################################******************######****#################################################################################################################################################################################:...............               -+++++++++++++++++++++++++++++++=====++++++++++++++====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************#####################################################################################******************************************++++++++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++*##***********************++====================================================+*************************************************************************+******+=================================================================================================+========+**++************************************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@%********************************************************************************************************************************************************************************************************************************************#########****************+++===----------===+++++===---------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************#########********************************#########################################****************+++++++++++++++++++++++++***************************************************************************************************************************************************************************************************++++++********##*****************####***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*****************************#####################*************+++++++++++++++++++++++++++++++++++********************************************+++++++****+++++++++++++++++++++++++++====================+++++++************+==============+++++=================================================================================================================================++******************+=+=++********************###************++++++********************************************############################********************************################################################################################################################################################################################:...............               :++++++++++++++++++++++++++++++++====+++++++++++++++===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************##################################################################################******************************************++++++++++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++==================================================+*********************************************************+++++**+**************==========================================================================================================++**++*************************************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@#********************************************************************************************************************************************************************************************************************************************##########***************+++===----------===+++++===---------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************########**********************************#######################################*****************++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************++++++*******###****************#####***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############****************************######################***********+++++++++++++++++++++++++++++++++++**********************************************++++++++****++++++++++++++++++++++++++===================+++++++************+=============+++++++=================================================================================================================================++******************+==++*******************####*****+++++++++++++**++**********************************************##################************************************################################################################################################################################################################################-...............               .++++++++++++++++++++++++++++++++=====+++++++++++++++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************################################################################################******************************************+++++++++++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++=+==================================================+*****************************************************++++++++++***************=========================================================================================================+++*++**+*************************************************************************************************%%%@@@@@@@@@@@@@@@@@@@@@@%#********************************************************************************************************************************************************************************************************************************************##########***************+++===-----------===++++===---------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%#%%%################################################################################################################################################################################
**********************************************************************************************************#######*************************************####################################*****************++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************++++++******####***************######***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########***************************#######################************++++++++++++++++++++++++++++++++++************************************************++++++++*******++++++++++++++++++++++==================++++++++**********+*+===========++++++++==================================================================================================================================++******************++=+*******************##**++++++++++++++++++++****************************#####*********************************************************************################################################################################################################################################################################=...............               .+++++++++++++++++++++++++++++++++====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************#############################################################################*******************************************++++++++++++++++++++++++++++++++++++++++++++++*#%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++***************************++=+==================================================+****************************************************++++++++++***************======================================================================================================+==++*+++***+*************************************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@%#********************************************************************************************************************************************************************************************************************************************##########***************+++===-----------===++++===---------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################################################################################
**********************************************************************************************************######***************************************##################################******************++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************+++++******#########**********#######****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########***************************#######################***********++++++++++++++++++++++++++++++++++************************************************++++++++++******++++++++++++++++++++++=================++++++++*********+**+==========+++++++++===================================================================================================================================++******************+++*********************+++++++++++++++++++++++***************************#########*****************************************************************################################################################################################################################################################################+.:.............                =+++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************#########################################################################*******************************************++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+=+==================================================+******************************************+++**+++++++++++++++*************+========================================================================================================+++*++***++************************************************************************************############*##%%@@@@@@@@@@@@@@@@@@@@@@%#********************************************************************************************************************************************************************************************************************************************###########***************++===-----------====++===----------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%#############################################################################################################################################################################
**********************************************************************************************************######******************************************##############################*******************+++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************+++++******#########**********########******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########************************########################***********+++++++++++++++++++++++++++++++++**************************************************+++++++++++****+++++++++++++++++++++++================+++++++++************+=========++++++++++====================================================================================================================================+******************+++*******************++++++*+****+++++++++++******************************############************************************************************################################################################################################################################################################################*.:.............                =++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************######################################################################*******************************************++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%##+++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++==================================================+*********************************+++***+*+++++++++++++++++++++************+=======================================================================================================++++*+***++**+**********************************************************************************################%%@@@@@@@@@@@@@@@@@@@@@%%#********************************************************************************************************************************************************************************************************************************************###########***************+++==------------========----------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%#############################################################################################################################################################################
**********************************************************************************************************######*******************************************###########################*********************+++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************+++++*****##########*********#########*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*********************######%%%################**********+++++++++++++++++++++++++++++++++*****##*******************************************+++++++++++++++++++++++++++++++++++++++===============+++++++++************+=========++++++++++====================================================================================================================================++*******************+*****+***********************++++++++++++++*******************************################******************************************************################################################################################################################################################################################*::.............                =++++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************###################################################################*******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%##++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++================================================+******************************++*++++*+++++++++++++++++++++++++**********+=======================================================================================================+++**+******************************************************************************************#################%%@@@@@@@@@@@@@@@@@@@@@%%#********************************************************************************************************************************************************************************************************************************************###########***************+++==------------========----------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%#############################################################################################################################################################################
**********************************************************************************************************#####*********************************************########################**********************++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************++++******##########*********#########**************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############********************####%%%%%%%#############***********++++++++++++++++++++++++++++++++*****#*********************************************+++++++++++++++++++++++++++++++++++++++==============++++++++++************+========++++++++++======================================================================================================================================+*******************+++++++++*****##**********++++++++++++++++++********************************##################**************************************************#################################################################################################################################################################################::.............                -++++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************##############################################################**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%###+++++++++++++++++++++++++++++++++++++++++++++++++********************************+=++=+===============================================+**********************++++++++++++++++++++++++++++++++++++*+++*********+=================================================================================================++=====+++**+******************************************************************************************###################%%@@@@@@@@@@@@@@@@@@@%%%#********************************************************************************************************************************************************************************************************************************************############**************+++==------------========----------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%############################################################################################################################################################################
**********************************************************************************************************#####*********************************************########################**********************+++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++++*****###########********##########****************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*****************#####%%%%%%%%#############**********++++++++++++++++++++++++++++++++*#####*********************************************+++++++++++++++++++++++++++++++++++++++===============+++++++++************+========+++++++++++=====================================================================================================================================++********************+++++*****###*++++****++++++++++++++++++++***********************************###################*********************************************##################################################################################################################################################################################:.:............                -++++++++++++++++++++++++++++++++++=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************##########################################################***********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%###++++++++++++++++++++++++++++++++++++++++++++++++*********************************+=++=+===============================================+**********************++++++++++++++++++++++++++++++++++*+++**+**+****+====================================================================================================++=++++*+++++****************************************************************************************###################%%@@@@@@@@@@@@@@@@@@@%%%#********************************************************************************************************************************************************************************************************************************************############**************+++==------------========----------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%############################################################################################################################################################################
**********************************************************************************************************#####**********************************************##################*##************************++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++******###########********##########*****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############***************#####%%%%%%%%#############***********++++++++++++++++++++++++++++++**#####**********************************************+++++++++++++++++++++++++++++++++++++++==============+++++++++*************=========++++++++++======================================================================================================================================++***************************####*++++++++++++++++++++++++++++++*************************************#################********************************************##################################################################################################################################################################################=.::...........                :++++++++++++++++++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************########################################################**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%##+++++++++++++++++++++++++++++++++++++++++++++++**********************************++++=+===============================================+******************+++++++++++++++++++++++++++++++++++++++***++******+====================================================================================================+===+++**++++*+****************************************************************************************####################%%@@@@@@@@@@@@@@@@@@%%%#********************************************************************************************************************************************************************************************************************************************############**************+++===------------=======----------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%############################################################################################################################################################################
**********************************************************************************************************####************************************************#################***************************++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************++*****############********##########*******************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********######%%%%%%%%%#############**********++++++++++++++++++++++++++++++*######***********************************************+++++++++++++++++++++++++++++++++++++++=============++++++++++************+========++++++++++========================================================================================================================================+************************####**+++++++++++++++++++++++++++++++****************************************##############********************************************##################################################################################################################################################################################+:.:...........                :++++++++++++++++++++++++++++++++++=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************####################################################***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%##*+++++++++++++++++++++++++++++++++++++++++++++************************************+++=+================================================*******************++++++++++++++++++++++++++++++++***++**++******++=======================================================================================================+++**+++++**+*****************************************************************************************################**##%@@@@@@@@@@@@@@@@@@%%%#********************************************************************************************************************************************************************************************************************************************#############*************+++===------------=======----------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%############################################################################################################################################################################
**********************************************************************************************************####**************************************************################**************************++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************############*******###########********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%#############**********++++++++++++++++++++++++++++++########*********************************+************+++++++++++++++++++++++++++++++++++++++=============++++++++++*************========++++++++++========================================================================================================================================++**********************#####*+++++++++++++++++++++++++++++++++******************************************###########********************************************##################################################################################################################################################################################*:.............                :+++++++++++++++++++++++++++++++++======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************##################################*##############***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%##*++++++++++++++++++++++++++++++++++++++++++++*************************************+=+==================================================****************************+++++++**********************+***+***+=======================================================================================================+++*++*++++++++******************************************************************************************##########*******##%%@@@@@@@@@@@@@@@@@%%%#********************************************************************************************************************************************************************************************************************************************#############*************+++===-------------======----------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%###########################################################################################################################################################################
**********************************************************************************************************##****************************************************################**************************++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************#############*******###########*********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%##############*********+++++++++++++++++++++++++++++*########********************************+++**+*********+++++++++++++++++++++++++++++++++++++++============+++++++++++************+=======+++++++++++========================================================================================================================================++******************#######**++=++++++++++++++++++++++++++++++********************************************#########********************************************###################################################################################################################################################################################-:............                :+++++++++++++++++++++++++++++++++======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************##############################*#############************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##*+++++++++++++++++++++++++++++++++++++++++++**************************************+++=+================================================****************************************************************+=======================================================================================================+++*+**+*++++++*************************************************************************************************************##%@@@@@@@@@@@@@@@@@%%##********************************************************************************************************************************************************************************************************************************************#############*************+++===-------------======----------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%###########################################################################################################################################################################
**********************************************************************************************************##*******************************************************#*************************************++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************#############***#***##########***********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%##############**********++++++++++++++++++++++++++++*###########*####*#***********************++++++********+++++++++++++++++++++++++++++++++++++++============+++++++++++*************=======+++++++++++=========================================================================================================================================+++*****************######****++++++++++++++++++++++++++++++++**********************************************######********************************************###################################################################################################################################################################################=:............                .++++++++++++++++++++++++++++++++++======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************########################################************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##*++++++++++++++++++++++++++++++++++++++++++***************************************+++=+================================================**************************************************************++======================================================================================================++++++++***+++++***************************************************************************************************************#%%@@@@@@@@@@@@@@@%%%##*********************************************************************************************************************************************************************************************************************************************############*************+++===-------------======----------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################
**********************************************************************************************************#**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************#############**##***##########***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++*+++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%##############*********+++++++++++++++++++++++++++*#######################*******************+++++++********+++++++++++++++++++++++++++++++++++++++===========+++++++++++*************+======+++++++++++==========================================================================================================================================++****************##########***++++++++++++++++++++++++++++++*************************************************###*******************************************####################################################################################################################################################################################+::...........                .+++++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************#######################***##########*************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%#*+++++++++++++++++++++++++++++++++++++++++****************************************+++++++==============================================*++++********************************************************+=======================================================================================================++*+*++++++*++***+**************************************************************************************************************#%%@@@@@@@@@@@@@@@%%%#**********************************************************************************************************************************************************************************************************************************************############*************+++===-------------======----------------==++***#########################################################################################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################
*********************************************************************************************************##************************************************************##********************************+++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************###############******##########************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++*++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%##############*********+++++++++++++++++++++++++++*##########################*****************+++++++++*****++++++++++++++++++++++++++++++++++++++++==========++++++++++++************+======+++++++++++==========================================================================================================================================+++***************##############***+++++++++++++++++++++++++***+************************************************##******************************************####################################################################################################################################################################################+-..:.........                 ++++++++++++++++++++++++++++++++++++++===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************#################***############**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##*++++++++++++++++++++++++++++++++++++++++******************************************++++++++============================================++++*+*****************************************************++======================================================================================================+++*+++++++++++*******************************************************************************************************************##%%@@@@@@@@@@@@@@%%%#**********************************************************************************************************************************************************************************************************************************************############*************++++==-------------======----------------==++***###############################################################****######################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################
*********************************************************************************************************##**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************###############*******#########************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++*++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%###############*********++++++++++++++++++++++++++*###########################****************+++++++++++***++++++++++++++++++++++++++++++++++++++++==========+++++++++++++************+=====+++++++++++==========================================================================================================================================+++***************##***##############****+++++++++++++++++++++++********************************************************************************************####################################################################################################################################################################################*=::..........                 +++++++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************#**********#############*************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%#*+++++++++++++++++++++++++++++++++++++++*******************************************++++++++============================================++++**********##########################******************++============================================================================================+========++++++*++++++++++********************************************************************************************************************#%%%@@@@@@@@@@@@@%%%#**********************************************************************************************************************************************************************************************************************************************############**************+++==--------------=====----------------==++***#############################################################******######################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################
*********************************************************************************************************###*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************###############*******########************************************************************************####**********************************+++++++++++++++++++++++++++++++++++++++++++++++++*+********++++++++++++++++++++++++++++*+++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%##############*********++++++++++++++++++++++++++############################*****************++++++++++*+++++++++++++++++++++++++++++++++++++++++++=========+++++++++++++************+++==+++++++++++++=========================================================================================================================================+++***************#*******############********++++++++++++++++**********************************************************************************************####################################################################################################################################################################################*+::..........                 =+++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************###############***++*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%#*++++++++++++++++++++++++++++++++++++++********************************************++++++++============================================++++********###############################**************+======================================================================================================+++*+++*++++++++**********************************************************************************************************************#%%%@@@@@@@@@@@@@%%##**********************************************************************************************************************************************************************************************************************************************#############*************+++==--------------=====----------------==++***############################################################********#####################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################
*********************************************************************************************************###*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++**************************************************************+++++************************************************************************************************************************################*******#######*************************************************************************######********************************++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++*++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*********++++++++++++++++++++++++*#############################*****************+++++++++*++*+++++++++++++++++++++++++++++++++++++++++=========++++++++++++*************+++++++++++++++++=========================================================================================================================================++++*************************#############*********++++++++*++++***************************************************#****************************************####################################################################################################################################################################################*+-...........                 -++++++++++++++++++++++++++++++++++++++++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************#****************###################*+++*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%##+++++++++++++++++++++++++++++++++++++*#*******************************************+++++++++===========================================++++*******################################************++==================================================================================================+===+++*++++*++++++++**********************************************************************************************************************##%%@@@@@@@@@@@@%%%##**********************************************************************************************************************************************************************************************************************************************#############*************+++===-------------====-----------------==++***############################################################*********####################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################
********************************************************************************************************####********************************************************************************************++++++++++++++++++++++++++++++++++++++++++*************************************************************+++++++**********************************************************************************************************************#################********######************************************************************************#######*********************************++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++*+++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############********++++++++++++++++++++++++###############################*****************+++++++++++**+++++++++++++++++++++++++++++++++++++++++========++++++++++++****************+++++++++++++++========================================================================================================================================++++***************************###############*********+++++++****************************************************###***************************************#####################################################################################################################################################################################+=..:........                 -++++++++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************#*************##################**++++******************+++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%##++++++++++++++++++++++++++++++++++++***********************************************+++++++++++========================================++++******################################***********+++=====================================================================================================+++*+++**+++++++*************************************************************************************************************************##%%@@@@@@@@@@@@%%%##**********************************************************************************************************************************************************************************************************************************************#############*************+++===----------------------------------==++***############################################################*********####################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################
********************************************************************************************************####********************************************************************************************++++++++++++++++++++++++++++++++++++++++++*****####***************************************************++++++++**********************************************************************************************************************################**********####************************************************************************########*********************************++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++*++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############********++++++++++++++++++++++*###############################******************+++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++****************+++++++++++++++========================================================================================================================================++++*****************************#####################******+++***************************************************####*************************************######################################################################################################################################################################################++:..........                 :++++++++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************###################**+++++++***********+++++++++******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%##*++++++++++++++++++++++++++++++++++************************************************+++++++++++========================================++++******###############################******++++*++=====================================================================================================+++*++***++++++++***************************************************************************************************************************##%%@@@@@@@@@@%%%##***********************************************************************************************************************************************************************************************************************************************#############*************+++===----------------------------------==++***############################################################*********####################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################
********************************************************************************************************####********************************************************************************************+++++++++++++++++++++++++++++++++++++++++*****#####***************************************************+++++++++********************************************************************************************************************#################**************************************************************************************########*********************************++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++*+++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*******++++++++++++++++++++++*#########*######################*******************++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++*****************++++++++++++++========================================================================================================================================++++********************************######################*****+**************************************************####*************************************######################################################################################################################################################################################++-..........                 .++++++++++++++++++++++++++++++++++++++++===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************#************##################**++++++++++****++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%##*+++++++++++++++++++++++++++++++++*************************************************+++++++++++========================================++++******##############################******+++++++===================================================================================================+=++*++****++++*++++****************************************************************************************************************************#%%@@@@@@@@@@%%###***********************************************************************************************************************************************************************************************************************************************#############*************+++===----------------------------------==++**#############################################################*********####################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################
********************************************************************************************************#####*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++****#######**************************************************+++++++++********************************************************************************************************************#################*************************************************************************************#########**********************************+++++++++++++++++++++++++++++++++++++++++++++****+********+++++++++++++++++++++++++++*+++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################******++++++++++++++++++++++#########**######################********************+++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++**************+***+++++++++++++========================================================================================================================================++++**********************************########################****************************************************####*************************************######################################################################################################################################################################################*+=..........                 .+++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************##################**++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%##*++++++++++++++++++++++++++++++++**************************************************+++++++++++========================================++++*******#######################**********+++++++======================================================================================================+++++*++++**+++********************************************************************************************************************************##%%@@@@@@@@@%%##************************************************************************************************************************************************************************************************************************************************##############************+++===----------------------------------==++**#############################################################*********####################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################
********************************************************************************************************#####*******************************************************************************************++++++++++++++++++++++++++++++++++++++++****########**************************************************+++++++++*******************************************************************************************************************##################*************************************************************************************#########**********************************++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++*++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*******++++++++++++++++++++*#########**#######################*********************++++++*++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++******************++++++++++++++=======================================================================================================================================++++*************************************########################*************************************************####************************************#######################################################################################################################################################################################*++::........                  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************#******###################*+++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##*+++++++++++++++++++++++++++++++**#************************************************+=+++++++++========================================+++++**************************************+++++++=============================================================================================+===+===++++++++++++++++**********************************************************************************************************************************##%@@@@@@@@@%##*************************************************************************************************************************************************************************************************************************************************##############*************++===----------------------------------==++***##############################################################******#####################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################
********************************************************************************************************#####*******************************************************************************************++++++++++++++++++++++++++++++++++++++++***#########**************************************************+++++++++*******************************************************************************************************************##################*************************************************************************************#########**********************************++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++*+++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*******+++++++++++++++++++##########**#######################*********************++++++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++******************++++++++++++++========================================================================================================================================+++***************************************########################****+*******************************************##*************************************#######################################################################################################################################################################################*++-..........                 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************#******###################*+++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##*++++++++++++++++++++++++++++++*****************************************************+++++++++++=======================================++++++************************************+++++++===========================================================================================++=======++++++++++++++++++**********************************************************************************************************************************##%%@@@@@@@%%#**************************************************************************************************************************************************************************************************************************************************##############*************++===----------------------------------==++***##############################################################******#####################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################
********************************************************************************************************####*******************************************************************************************++++++++++++++++++++++++++++++++++++++++****#########*************************************************++++++++++*******************************************************************************************************************##################************************************************************************************##########**********************************+++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++*++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############******++++++++++++++++++*##########**########################**********************++++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++*******************++++++++++++++=======================================================================================================================================+++******************************************#######################*************************************************************************************#######################################################################################################################################################################################*++=:........                  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++*******##################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##*+++++++++++++++++++++++++++++******************************************************++++++++++++======================================++++++++*****************************+++++++++++===============================================================================================+====++*+++++++++++++++************************************************************************************************************************************##%%@@@@@@%##********************************************************************************************************************#*****************************************************************************************************************************##############*************+++===---------------------------------==++***##############################################################****#######################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################
********************************************************************************************************####*******************************************************************************************++++++++++++++++++++++++++++++++++++++++****##########************************************************++++++++++******************************************************************************************************************###################************************************************************************************##########**********************************+++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############*****++++++++++++++++++###########**########################***********************+++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++*******************++++++++++++++=======================================================================================================================================+++********************************************########################***++****************************************************************************#########################################################################################################################################################################################+++-........                  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++****###################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%##++++++++++++++++++++++++++++*******************************************************++++++++++++======================================++++++++++*********++++++++++++++++++++++++++++===================================================================================================++*++*++++++++++++++*************************************************************************************************************************************#%%@@@@@%%#*********************************************************************************************************************##****************************************************************************************************************************##############*************+++===---------------------------------==++**************##############################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################
********************************************************************************************************####*******************************************************************************************+++++++++++++++++++++++++++++++++++++++****###########************************************************++++++++++*****************************************************************************************************************####################********###*************************************************************************##########**********************************+++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############******++++++++++++++++*###########**#########################************************+++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++*******************++++++++++++++=======================================================================================================================================+++**********************************************###########%%%##########******************************************************************************##########################################################################################################################################################################################+++=:.......                  =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++**###################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%##++++++++++++++++++++++++++*********************************************************+=+++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================++==++*++**++++++++*++++++*************************************************************************************************************************************#%%%%@@@%%#*********************************************************************************************************************###***************************************************************************************************************************###############************+++===---------------------------------==++****************############################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################
********************************************************************************************************####*******************************************************************************************+++++++++++++++++++++++++++++++++++++++****###########************************************************++++++++++*****************************************************************************************************************###################********#####************************************************************************#########***********************************+++++++++++++++++++++++++++++++++++++************************++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*****+++++++++++++++*############**#########################*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++======================================================================================================================================+++***********************************************###########%%%%%##########***+***********************************************************************##########################################################################################################################################################################################++++=:.......                 =++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++*#################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%##+++++++++++++++++++++++++**********************************************************+++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++==============================================================================================+===++++++*++++++++++*++++++*************************************************************************************************************************************##%%%%%%%%#*********************************************************************************************************************###****************************************************************************************************************************##############************+++===---------------------------------==++*********+*******###########################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################
********************************************************************************************************###*******************************************************************************************++++++++++++++++++++++++++++++++++++++++****###########************************************************+++++++++*****************************************************************************************************************####################********#####************************************************************************#########************************************+++++++++++++++++++++++++++++++++++*************************++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############******++++++++++++++*############*##########################**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++======================================================================================================================================++**************************************************#############%%%##########************************************************************************###########################################################################################################################################################################################+++++=:.......                =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++*################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%##++++++++++++++++++++++++*****#******************************************************++++++=+++++=====================================+++++++++++++++++++++++++++++++++++++++++++===============================================================================================+=+++++++++++++++++++++++++***************************************************************************************************************************************#%%%%%%%%#*********************************************************************************************************************####***************************************************************************************************************************##############************+++===---------------------------------==++*****++++++++*****##########################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################
********************************************************************************************************###*******************************************************************************************++++++++++++++++++++++++++++++++++++++++****####%######************************************************+++++++++*****************************************************************************************************************####################*******######************************************************************************########*************************************+++++++++++++++++++++++++++++++++++*************************++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%@@@@@@%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****+++++++++++++*#############*##########################**************************+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++======================================================================================================================================++***************************************************########%%%%%%%%%%#########**********************************************************************###########################################################################################################################################################################################++++++=:.....                 =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++*#################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++*#%%%##*++++++++++++++++++++++*************************************************************++++++=+++++=====================================++++++++++++++++++++++++++++++++++++++++++==============================================================================================+==+++**++*++++++++*+++++++++***************************************************************************************************************************************##%%%%%%#**********************************************************************************************************************####***************************************************************************************************************************##############************+++===---------------------------------==++****++++++++++****##########################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################################################
********************************************************************************************************###*******************************************************************************************++++++++++++++++++++++++++++++++++++++++***####%%######************************************************++++++++++***************************************************************************************************************#####################*******######***********************************************************************#########*************************************+++++++++++++++++++++++++++++++++****************************+++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%@@@@@%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*****++++++++++++##############*###########################*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++=====================================================================================================================================+****************************************************##########%%%%%%%%%%%########*******************************************************************############################################################################################################################################################################################*++++++=-...... .             -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++***##############*#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+++++++++++++++++++*##%%##*+++++++++++++++++++++**************************************************************++++++++++++++====================================+++++++++++++++++++++++++++++++++++++++===============================================================================================+=+++++****++++++++++++++*********************************************************************************************************************************************###%%%##***********************************************************************************************************************###***************************************************************************************************************************##############************+++===---------------------------------==+++**+++======+++****#########################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################################################
********************************************************************************************************###*******************************************************************************************++++++++++++++++++++++++++++++++++++++++***####%%######************************************************+++++++++****************************************************************************************************************#####################*******######***********************************************************************#########*************************************++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%#############################%%%%##########%%%%%%%%%%%%%%%%%%%%%#################*****+++++++++++*##########################################*********************++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++====================================================================================================================================++****************************************************#############%%%%%#%%%%#######*****************************************************************#############################################################################################################################################################################################*+++++++=-:...... ..          -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#############*#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++***********************************++++++++++++++++++*##%%##*++++++++++++++++++++***************************************************************++++++++++++++====================================++++++++++++++++++++++++++++++++++++++===========================================================================================+==++=+++*******++++++++++++++**********************************************************************************************************************************************######************************************************************************************************************************###***************************************************************************************************************************##############************+++===---------------------------------==+++++++=========++****########################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################################################
********************************************************************************************************##********************************************************************************************++++++++++++++++++++++++++++++++++++++++***####%%######***********************************************++++++++++****************************************************************************************************************#####################*******######***********************************************************************#########*************************************++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%@@@@@%%%@@@@@@@%%%%%%%%%%%%%%%%############################%%%##%%%#########%%%%%%%%%%%%%%%%###################*****++++++++++*############################################********************++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++====================================================================================================================================+*****************************************************################%%%%%%%%%%######***************************************************************#############################################################################################################################################################################################*++++++++==--:...::-:         :++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++****##########***#*++=+++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++***************************************++++++++++++++++++*##%%%#*+++++++++++++++++++****************************************************************++++++++++++++====================================+++++++++++++++++++++++++++++++++++++==========================================================================================+=====++**********+++++++++++***************************************************************************************************************************************************##**************************************************************************************************************************####**************************************************************************************************************************###############***********+++===---------------------------------==++++++====---====++***########################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################
******************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++***####%%%#####***********************************************++++++++++***************************************************************************************************************######################*******#####************************************************************************#########*************************************++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%@@@@@%%%@@@@@@@%%%%%%%%%%%%%%%%%%#########################%%%%##%%%###########%%%%%%%%%%%%%%####################*****+++++++++##############################################*****************************++++++++++++++++++++++++++++++++++++++++++++++*+++++++++******************++++++++++++++++===================================================================================================================================+*******************************************************#################%%%%%%%%%%#######***********************************************************##############################################################################################################################################################################################*++++++++============.        .++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**########*****++++++++++++++++++++++++++++++++++++++++++++++++++==============+++++++++++++++********************************************+++++++++++++++++*##%%%#*++++++++++++++++++*#****************************************************************++++=+++++++++===================================++++++++++++++++++++++++++++++++++++===============================================================================================+++************+++++++++********************************************************************************************************************************************************************************************************************************************************************************####**************************************************************************************************************************###############************+++==---------------------------------==++++++===-----===++****#######################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################
******************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++***####%%%#####***********************************************++++++++++***************************************************************************************************************#####################********#####************************************************************************########**************************************++++++++++++++++++++++++++++++++****************************++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%@@@@@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%##%%%%%#############%%%%%%%%%%%####################*****++++++++*##############################################******************************+++++++++++++++++++++++++++++++++++++++++++++**++++++++*******************+++++++++++++++==================================================================================================================================++*******************************************************####################%%%%%%%%%%%####**********************************************************###############################################################################################################################################################################################++++++++++==========:         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######*****++++++++++++++++++++++++++++++++++++++++++++++================++++++++++++++++++++*****************************************++++++++++++++++++*##%%%#*++++++++++++++++**#*****************************************************************++++=+++++++++===================================+++++++++++++++++++++++++++++++++++==============================================================================================+++*****************++++++********************************************************************************************************************************************************************************************************************************************************************************####**************************************************************************************************************************###############************+++==---------------------------------==+++++===-------===++***#######################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################
*****************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++***####%%%#####***********************************************++++++++++***************************************************************************************************************#####################********####*************************************************************************########**************************************++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%##%%%%%###############%%%%%%%%%####################******++++++*###############################################*******************************++++++++++++++++++++++++++++++++++++++++++++***+++++++*******************+++++++++++++++==================================================================================================================================+********************************************************#######################%%%%%%%%%%#####******************************************************################################################################################################################################################################################################+++++++++===========-         +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####*##**++++++++++++++++++++++++++++++++++++++++++++++==============+++++++++++++++++++++++*****************************************+++++++++++++++++++###%%#*+++++++++++++++*********************************************************************++++=++++++++++==================================++++++++++++++++++++++++++++++++++=============================================================================================++++*******************++++*********************************************************************************************************************************************************************************************************************************************************************************####**************************************************************************************************************************###############************+++==---------------------------------===+++====--------==+++***######################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################
*****************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++***####%%%#####**********************************************+++++++++++**************************************************************************************************************######################********####*************************************************************************########**************************************++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%################%%%%%%%%#####################******+++++################################################*********************************++++++++++++++++++++++++++++++++++++++++++****++++++*******************+++++++++++++++=================================================================================================================================+*********************************************************##########################%%%%%%%%#####*****************************************************################################################################################################################################################################################################+++++++++============         =++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###*****+=+++++++++++++++++++++++==+++++++++++++++++++=============+++++++++++++++++++++++++*****************************************+++++++++++++++++++###%%##++++++++++++++**#**#****************************************************************++++++++++++++++=================================+++++++++++++++++++++++++++++++++=============================================================================================+++**+******************+************************************************************************************************************************************************************************************************************************************************************************************####**************************************************************************************************************************###############************+++===--------------------------------===+++===---------===++***######################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################
*****************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++***####%%%#####**********************************************+++++++++++*********************************************************************************************+****************######################********####*************************************************************************########**************************************++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%##############*#%%%%%%%%#####################******++++*###############################################***********************************+++++++++++++++++++++++++++++++++++++++++****++++++*******************+++++++++++++++=================================================================================================================================+*********************************************************############################%%%%%%%%#%##***************************************************#################################################################################################################################################################################################+++++++++============.        =++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++===+++++++++++++++++========++++++++++++++++++++++++++++++++++**************************************++++++++++++++++++++###%###+++++++++++++************************************************************************+++++++++++++++=================================+++++++++++++++++++++++++++++++==============================================================================================++++*********************+************************************************************************************************************************************************************************************************************************************************************************************####**************************************************************************************************************************###############************+++===--------------------------------====+====----------==++***######################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################
*****************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++***###%%%%#####**********************************************+++++++++++***************************************************************************************+++++++***************#######################*********##**************************************************************************#######***************************************+++++++++++++++++++++++++++++++++*************************++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%#################%%%%%%%#####################******+++*###############################################**************************************+++++++++++++++++++++++++++++++++++++++*****+++++*******************+++++++++++++++================================================================================================================================+**********************************************************###############################%%%%%%%%#**************************************************##################################################################################################################################################################################################++++++++++===========-        =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#*++++++++++++++++++++++=========++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++***********************************++++++++++++++++++++##%%%##++++++++++++*************************************************************************+++++++++++++++++=====++++======================++++++++++++++++++++++++++++++=============================================================================================+++*************************************************************************************************************************************************************************************************************************************************************************************************************#####*************************************************************************************************************************################***********+++===--------------------------------========-----------===++**######################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################
*****************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++***###%%%%#####**********************************************+++++++++++***************************************************************************************+++++++***************#######################**************************************************************************************######***************************************+++++++++++++++++++++++++++++++++************************+++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%##################%%%%%%%#####################*******+*################################################***************************************++++++++++++++++++++++++++++++++++++++*****+++++*******************++++++++++++++++==============================================================================================================================++*********************************************************##################################%%%%%##**************************************************##################################################################################################################################################################################################+++++++++=============        =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************++++++++++++++++++++###%%##+++++++++++**************************************************************************+++++++++++++++++====++++++=====================+++++++++++++++++++++++++++++==================================================================================+==++==+==+++**+************************************************************************************************************************************************************************************************************************************************************************************************************#####*************************************************************************************************************************################***********+++===--------------------------------========-----------===++***#####################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################
*****************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++***####%%%#####**********************************************++++++++++***************************************************************************************++++++++***************#######################**************************************************************************************######***************************************++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++#%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%######################*******#################################################*****************************************++++++++++++++++++++++++++++++++++++******++++*******************++++++++++++++++=============================================================================================================================++**********************************************************######################################%##*************************************************###################################################################################################################################################################################################+++++++++=============:       =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************++++++++++++++++++++*##%%##*+++++++++***************************************************************************++++++++++++++++++===+++++++====================+++++++++++++++++++++++++++++===================================================================================++==+===++++++*************************************************************************************************************************************************************************************************************************************************************************************************************#####*************************************************************************************************************************################***********+++===--------------------------------========------------==++***#####################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################
****************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++****###%%%######*********************************************++++++++++**************************************************************************************+++++++++***************#######################**************************************************************************************######***************************************+++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%#################%%%%%%%%#####################*******#################################################******************************************+++++++++++++++++++++++++++++++++++******++++*******************++++++++++++++++=============================================================================================================================+***********************************************************#########################################*************************************************###################################################################################################################################################################################################*++++++++=============-       =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************++++++++++++++++++++*##%%##*+++++++******************************************************************************+++++++++++++++++++++++++++++==================++++++++++++++++++++++++++++=========================================================================================++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************************################***********+++===--------------------------------========------------===+****#####################################################################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################
****************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++****###%%%######*********************************************++++++++++**************************************************************************************+++++++++**************########################**************************************************************************************######***************************************+++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@@@%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%%%%##################%%%%%%%#####################******#%%###############################################***************++**************************++++++++++++++++++++++++++++++++++*******+++*******************++++++++++++++++============================================================================================================================++***********************************************************#########################################************************************************####################################################################################################################################################################################################*++++++++==============       -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++*##%%##*++++++*******************************************************************************+++++++++++++++++++++++++++++++================+++++++++++++++++++++++++++=========================================================================================+++++++***+*************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************************################***********+++===---------------------------------======-------------===++***#####################################################################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################
****************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++****###%%%######*********************************************++++++++++*************************************************************************************++++++++++**************#######################***************************************************************************************######***************************************++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%##################%%%%%%%#######################***#%%%%##############%%%#############################**************+++++*************************++++++++++++++++++++++++++++++++++******+++*******************+++++++++++++++++==========================================================================================================================++**************++*********************************************########################################************************************************####################################################################################################################################################################################################*++++++++==============:      -+++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++===+++++++++++++=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************+++++++++++++++++++*##%%##*+++++********************************************************************************++++++++++++++++++++++++++++++++===============++++++++++++++++++++++++++=========================================================================================++++++**+++**************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************************################***********+++===-----------------------------------===---------------==++***#####################################################################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################
****************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++****###%%%######*********************************************++++++++++************************************************************************************+++++++++++**************#######################****************************************************************************************#####***************************************+++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%######%%%#######%%%%%%#####%%%%%%%#######################**#%%%%%###########%%%%%%%############################**************++++++++************************++++++++++++++++++++++++++++++++******+++*******************+++++++++++++++++=====================================================================================================================+++++++*+***********+++++*******************************************#######################################************************************************#####################################################################################################################################################################################################*++++++++==============-      :++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====+==++++++++++++=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************+++++++++++++++++++*##%%##*++++*********************************************************************************+++++++++++++++++++++++++++++++++==============++++++++++++++++++++++++++=====================================================================================+=++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************************################***********++++==-----------------------------------------------------==++***#############################################################################################%%%%####################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################
****************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++****###%%%######*********************************************++++++++++***********************************************************************************++++++++++++*************########################****************************************************************************************#####***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%######%@%%####%%%%%%%%######%%%%%%%#########################%%%%#%%%######%%%%%%%%%#############################*************+++++++++************************+++++++++++++++++++++++++++++++*******++*******************+++++++++++++++++====================================================================================================================++++++++*+***********+++++++*****++***********************************#####################################**+**********************************************#####################################################################################################################################################################################################*++++++++===============.     :++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======++++++++++++====+=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++*##%%##*+++**********************************************************************************+++++++++++++++++++++++++++++++++==============+++++++++++++++++++++++++======================================================================================+++++++*+++++++**************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************************################***********++++==-----------------------------------------------------==++***#############################################################################################%%%%%###################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################
***************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++***####%%%######*********************************************++++++++++*********************************************************************************++++++++++++++************########################******************************************************************************************####**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%#%%%%@%%%#########%%%%%%%#######################%%%%%####%#%%#%#%%%%%%%%%#############################*************+++++++++++***********************++++++++++++++++++++++++++++++*******+********************+++++++++++++++++===================================================================================================================+++++++++++**********++++++++++********++++++**************************##################################***************************************************#######################################################################################################################################################################################################++++++++===============-     .++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+====+++++=====+===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++*##%%##*++************************************************************************************++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++====================================================================================++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************#####***********************************************************************************************************************##################**********++++===----------------------------------------------------===++***############################################################################################%%%%%%##################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################
***************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++***####%%%######*********************************************++++++++++********************************************************************************+++++++++++++++************########################******************************************************************************************####**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%@@%%###########%%%%%%%######################%%%%%#########%%%%%%%%%%%%#############################*************++++++++++++************************++++++++++++++++++++++++++++****************************++++++++++++++++++==================================================================================================================++++++++++***********++++++++++++++********+++++++*********************##############################*****++************************************************#######################################################################################################################################################################################################++++++++================.     ++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+==++++==+=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************++++++++++++++++++*###%##***************************************************************************************++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++======================================================================+===++===+===+++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************#####***********************************************************************************************************************##################**********++++===-----------------------------------------------------==++***############################################################################################%%%%%%##################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################
***************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++****####%%%######*********************************************+++++++++********************************************************************************++++++++++++++++************########################*******************************************************************************************##***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%@%%%#############%%%%%%#####################%%%%%######***#%%%%%%%%%%%%##############################************++=++++++++++*************************++++++++++++++++++++++++++****************************++++++++++++++++++==================================================================================================================+++++++++***********++++++++++++++++++++*******++++++++++**************#############################*******************************************************########################################################################################################################################################################################################++++++++================-     ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++###%%##**************************************************************************************+++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++=========================================================================++===+===+++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************#####***********************************************************************************************************************##################**********++++===-----------------------------------------------------==++***############################################################################################%%%%%%##################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################
**************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++****####%%%%#####*********************************************+++++++++*******************************************************************************+++++++++++++++++************########################***********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%@%%%###############%%%%%%###################%%%%%%#####**+**#%%%%%%%%%%%##############################************++=+==+++++++++*************************++++++++++++++++++++++++*****************************+++++++++++++++++==================================================================================================================+++++++++***********++++++++++++++++++++++++********++++++++++**********##############################*********++******************************************########################################################################################################################################################################################################++++++++=================.    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++###%%##**************************************************************************************+++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++==================================================================+++==+==+++===+++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************#####***********************************************************************************************************************##################**********++++===-----------------------------------------------------==++****############################################################################################%%%%%##################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################
**************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++****####%%%%#####*********************************************+++++++++*****************************************************************************++++++*+++++++++++++**********#########################***********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++*++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%@%%%%%%%%%%%%%%%%%@%%################%%%%%%##################%%%%%%#####**++++#%%%%%%%%%%%##############################************++=+==+===+++++++************************+++++++++++++++++++++++*****************************+++++++++++++++++==================================================================================================================+++++++++**********++++++++++++++++++++++++++++*********+++++++++++******#################################************************************************#########################################################################################################################################################################################################++++++++=================-    =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++###%%##**+++++*********************************+**********************************************++++++++++++++++++++++++++++++++++++++++====+++++++++++++++++++++++++================================================================++++++++=++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************####***********************************************************************************************************************##################**********++++===-----------------------------------------------------===++***###############################################################################################%###################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################
**************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++****####%%%%#####*********************************************+++++++++****************************************************************************+++++++++++++++++++++**********#########################***********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*#%%@%%%%%%%%%%%%%@%%%%#################%%%%%##################%%%%%######*+++++*#%%%%%%%%%%##############################************++=++=+===++++++++************************++++++++++++++++++++++*****************************++++++++++++++++++=================================================================================================================++++++++***********+++++++++++++++++++++++++++++++**********+++++++++++*****################*#################********************************************#########################################################################################################################################################################################################*+++++++==================.   =++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++##%%%##*+++++++*****************************++++++++******************************************++++++++++++++++++++++++++++++++++++++++++==+++++++++++++++++++++++++===============================================================+++++++++++==++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####**********************************************************************************************************************###################**********++++===------------------------------------------------------==++***###################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################
**************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++****####%%%#####********************************************++++++++++****************************************************************************+++++++++++++++++++++*********##########################**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++*+++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%@@%%%%%%%%%%%%%%%%################%%%%%#################%%%%%#####***++++++*#%%%%%%%%%###############################***********+++++=++==+++++++++*************************++++++++++++++++++++*****************************++++++++++++++++++=================================================================================================================++++++++**********++++++++++++++++++++++++++++++++++***********+++++++++++******########*********#################***************************************##########################################################################################################################################################################################################*+++++++==================-   -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++##%%%##*++++++++**************************+++++++++++*****************************************++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++++++==============================================================+++++++++==++++*+++*+++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####**********************************************************************************************************************###################**********++++===--------------------------------------------=---------==++***###################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################
*************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++****#####%%#####********************************************++++++++++****************************************************************************+++++++++++++++++++++*********#########################***********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%@%%%%%%@@%%%%%%%%###############%%%%%################%%%%%%##*#****+++++++#%%%%%%%%%###############################***********+=+++=+======+++++++*************************+++++++++++++++++++******************************+++++++++++++++++=================================================================================================================+++++++**********+=++=+++++++++++++++++++++++++++++++++************+++++++++++++****#****+++++*******################************************************##########################################################################################################################################################################################################*+++++++===================.  :++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++##%%%#**+++++++++************************++++++++++++++***************************************+++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++==+=============================================================++++++++=+++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************####**********************************************************************************************************************###################**********++++===-------------------------------------------====-------==++***###################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################
*************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++****#####%######*********************************************+++++++++*************************************************************************++++++++++++++++++++++++*********#########################**********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@%%%%%%%@@%%%@@@@%@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@%%################%%%%%%@%%%@@%%%%%%%%%##############%%%%%###############%%%%%###******++++++++*#%%%%%%%%###############################***********+++++=+++=+++++++++++*************************++++++++++++++++++******************************+++++++++++++++++==============================================================================================================++++=+++++**********++==+=+++++++++++++++++++++++++++++++++++********##****+++++++++++++*++++++++*****+*****################*******************************###########################################################################################################################################################################################################*++++++++==================-  .++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++++++++++++*##%%%##*++++++++++++**+++++++++++++*****++++++++++++++++*#************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================++======+++++====+++===++=++++==+++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************#####********************************************************************************************************************####################**********++++===------------------------------------------=====-------===++***##################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################
*************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++*****###########*********************************************+++++++++************************************************************************+++++++++++++++++++++++++*********#########################*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%@@%%%%%%%%%%#############%%%%%%#############%%%%####******++++++++++*##%%%%%%###############################***********+++++=++++++++++++++++**************************++++++++++++++++******************************+++++++++++++++++==============================================================================================================+++++++++**********+=======++++++++++++++++++++++++++++++++++++********#####***+++++++++++++++++++++**++**+****#################***************************###########################################################################################################################################################################################################*++++++++===================- .++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++**#%%%##*+++++++++++++++++++++++++++++++++++++++++++++++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================++++++++===+========++===++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************#####*******************************************************************************************************************#####################**********++++===------------------------------------------======-------==++***##################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################
*************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++*****###########*********************************************+++++++++***********************************************************************++++++++++++++++++++++++++********##########################********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%########%%%%%%%%%%@@%%%%%%%%%%%%#########%##%%%%%%#############%%%####*******++++++++++*###%%%%################################**********++++++++++++++++++++++++**************************+++++++++++++++*******************************+++++++++++++++++============================================================================================================++++++++++**********+===+=+=====+++++++++++++++++++++++++++++++++++****##########**++++++**+*****++++++**++*+++****##################**********************############################################################################################################################################################################################################*++++++++====================:.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++*+**#%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================++======++++========+++++==+++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####*******************************************************************************************************************#####################**********++++===-----------------------------------------========------==++***##################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################
************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++*****##########*********************************************+++++++++********************************************************************+++++++++++++++++++++++++++++********#########################********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%####%%%%%%%%%%@@%%%%%%%%%%%%%%#####%%%%#%%%%%%%%###########%%%#####******++++++++++++#####%#################################**********+++++++++++++++++++++++++***************************+++++++++++++********************************++++++++++++++++============================================================================================================+++++++++***********+=+==========++++++++++++++++++++++++++++++++++++****############***+++**++++++*+++********++++****#################*******************############################################################################################################################################################################################################*++++++++=====================-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++***+**#%%%##*+++++++++++++++++++++++++++++++++==+++++++++++++++++***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================+==========++++++========+++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####******************************************************************************************************************######################**********++++===-----------------------------------------========------==++***##################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################
************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++******##########********************************************+++++++++********************************************************************+++++++++++++++++++++++++++++********#########################********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%#########%%%#####*******++++++++++++*####%##################################*********++++++++++++++++++++++++++***************************++++++++++++********************************++++++++++++++++============================================================================================================++++++++***********+=++==============+++++++++++++++++++++++++++++++++++***#############***+++***++***+++++++*******+++***#################***************#############################################################################################################################################################################################################*++++++++======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++****+++*##%###*+++++++++++++++++++++++++++++++++====++++++++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++========================================+++++++++=======+++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####*****************************************************************************************************************#######################**********++++===-----------------------------------------========------===++**###################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++*****##########********************************************++++++++*******************************************************************+++++++++++++++++++++++++++++++*******#########################*******************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%########%%%%####*******+++++++++++++*#######################################*********+++++++++++++++++++++++++++****************************++++++++++*********************************+++++++++++++++===========================================================================================================+++++++++***********+=+================+++++++++++++++++++++++++++++++++++****###############***++**+++++++++*****++***********#################***********#############################################################################################################################################################################################################*++++++++======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++****++++*##%###*++++====++++++++++++++++++++++++=======+++++++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++=============================================+=====++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####*****************************************************************************************************************#######################*********+++++====----------------------------------------=========-----===++**###################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++******#########********************************************++++++++******************************************************************++++++++++++++++++++++++++++++++*******#########################******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@%%%@@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%#####******+++++++++++++++#######################################*********+++++++++++++++++++++++++++******************************++++++++*********************************+++++++++++++++===========================================================================================================++++++++************+===++==============+++++++++++++++++++++++++++++++++++*****################***+**+++*****++++**+*************#################*******##############################################################################################################################################################################################################*+++++++++=====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++***+**++++*#####*+++=======+++++++++++++++++++++++========++++++++++++++++********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####****************************************************************************************************************########################*********+++++====---------------------------------------==========------==++***##################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++******#######*********************************************++++++++*****************************************************************+++++++++++++++++++++++++++++++++*******#########################******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%######******+++++++++++++++#######################################*********++++++++++++++++++++++++++++*******************************++++++*********************************+++++++++++++++==========================================================================================================+++++++++************+++++++================+=+++++++++++++++++++++++++++++++******##################****+**+++************************################****##############################################################################################################################################################################################################*+++++++++======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++*****+***++*#####*++=========++++++++++++++++++++++=========++++++++++++++++*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####***************************************************************************************************************#########################*********+++++====---------------------------------------====++====------==++***##################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
***********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++******#######*********************************************+++++++*******************************************************************++++++++++++++++++++++++++++++++******#########################**********************************************************************************************+++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@%%%%%@@@%%%%%%%%%%%%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%######******++++++++++++++++*#######################################********+++++++++++++++++++++++++++++**********************************+***********************************+++++++++++++++=========================================================================================================++++++++*******************+====================++++++++++++++++++++++++++++**********##################***++++***************************###############################################################################################################################################################################################################################*+++++++++======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+**********++++*#####*+===========+++++++++++++++++++++==========+++++++++++++++++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++====++================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************#####**************************************************************************************************************#########################*********+++++====---------------------------------------===++++====-----==++***##################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
***********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++*******######*********************************************+++++++*************************************************************+******+++++++++++++++++++++++++++++++******########################**********************************************************************************************++++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@%%%%%%@@%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######******++++++++++++++++*#######################################********+++++++++++++++++++++++++++++**********************************************************************+++++++++++++++========================================================================================================+++++++++*******************+====================+++++++++++++++++++++++++++**************##################****+++***+******+****************############################################################################################################################################################################################################################*++++++++++======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====+++++++++********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++*#####*+===========+++++++++++++++++++++==========++++++++++++++++++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====++++++=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************#####**************************************************************************************************************#########################*********+++++====---------------------------------------===+++++===-----===+***##################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
***********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++********#####*********************************************+++++++*************************************************************+*****++++++++++++++++++++++++++++++++******########################**********************************************************************************************+++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%%%%%%%%@@@%%%%%%%%@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*****+++++++++++++++++*#######################################*******+++++++++++++++++++++++++++++++*********************************************************************+++++++++++++++========================================================================================================++++++++*********************+===================+++++++++++++++++++++++++++****************####################***++****************************#########################################################################################################################################################################################################################*++++++++++======================++++++++++++++++++++++++++++++++++++++***++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++*#####*+============+++++++++++++++++++++==========++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************#####**************************************************************************************************************#########################*********+++++====---------------------------------------===++++++==-----===++***#################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
***********************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++********###**********************************************++++++*******************************************************************+++++++++++++++++++++++++++++++++******#######################***********************************************************************************************+++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%@@@@@@@@@@%%%%%%%%%%%%@@%%%%%%%@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*****+++++++++++++++++*########################################******++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++========================================================================================================++++++++*********************+=====================+++=+++++++++++++++++++++********************###################***********+*********************######################################################################################################################################################################################################################*++++++++++=======================+++++++++++++++++++++++++++++++++******+++++++++++==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++*#####*+============+++++++++++++++++++++==========++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************##########################*********+++++====---------------------------------------===++++++===----===++***#################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
**********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************++++++**************************++++***************************************+++++++++++++++++++++++++++++++******########################*********************************************************************************************+++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*****+++++++++++++++++++*####%##################################******+++++++++++++++++++++++++++++++++********************************************************************++++++++++++++========================================================================================================++++++++*********************+==========================+++++++++++++++++++***********************#####################***++***************************###################################################################################################################################################################################################################*++++++++++========================+++++++++++++++++++++++++++++++*********++++++==================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++*#####*+============++++++++++++++++++++++==========++++++++++++++++++++*************************++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************##########################*********+++++====---------------------------------------===+++++++===---===+++***################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
**********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************+++++************************++++++++++************************************+++++++++++++++++++++++++++++++******########################*********************************************************************************************+++++++**********##***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*****+++++++++++++++++++*####%##################################******++++++++++++++++++++++++++++++++++*******************************************************************++++++++++++++======================================================================================================+++++++++**********************+===========================++++++++++++++++++**************************######################******************************#################################################################################################################################################################################################################*+++++++++++=========================+++++++++++++++++++++++++++++********+++++====================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++*#####*+============++++++++++++++++++++++==========++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************##########################*********+++++====----------------------------------------==++***+++===--====++***################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################
**********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************+++++************************++++++++++++*******+++**++**********************+++++++++++++++++++++++++++++******#######################**********************************************************************************************+++++++*******########*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%@@%@@%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%#########****++++++++++++++++++++*#######################################******++++++++++++++++++++++++++++++++++*******************************************************************++++++++++++++======================================================================================================+++++++++**********************==============================+++++++++++++++++****************************######################***************************#################################################################################################################################################################################################################*+++++++++++====================================++++++++++++++++++++**++++++++======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++*####*+============++++++++++++++++++++++==========+++++++++++++++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************#####************************************************************************************************************##########################*********+++++====---------------------------------------===++****+++========++****################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################
**********************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************+++++***********************+++++++++++++++**+++++++++++**********##***********+++++++++++++++++++++++++++******######################***********************************************************************************************++++++++*****##########******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%#########****+++++++++++++++++++++*######################################******+++++++++++++++++++++++++++++++++++******************************************************************+++++++++++++++====================================================================================================+++++++++********##************+==============================+++++++++++++++++******************************#######################************************#################################################################################################################################################################################################################++++++++++++=====================================+++++++++++++++++++++++++++++=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+*++++++*###**+============+++++++++++++++++++++++=========++++++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************#####************************************************************************************************************##########################*********+++++====-------------------------------==------===++*****++========++****################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################
**********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************++++***********************+++++++++++++++++++++++++++++++********##************++++++++++++++++++++++++++******#######################**********************************************************************************************++++++++*****##########*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%##########***++++++++++++++++++++++*######################################*****+++++++++++++++++++++++++++++++++++++*****************************************************************+++++++++++++++===================================================================================================++++++++++*******##*************+===============================++++++++++++++++++*******************************#######################********************#################################################################################################################################################################################################################*++++++++++++==================================================++++++++++++++++========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++*###**+============+++++++++++++++++++++++==========+++++++++++++++++++++++++*******+++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************#####***********************************************************************************************************###########################*********+++++====-------------------------------===-----===++******+++=====+++****################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################
*************************************************************************************************++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************+++************************+++++++++++++++++++++++++++++++********##************++++++++++++++++++++++++++******#######################***********************************************************************************************+++++++*****###########****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########***+++++**+++++++++++++++**#####################################*****++++++++++++++++++++++++++++++++++++++*****************************************************************++++++++++++++===================================================================================================+++++++++******###**************+===============================++++++++++++++++++****************++++++++**********#######################*****************#################################################################################################################################################################################################################*++++++++++++===================================================++++++++++++++++========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++*###**+============++++++++++++++++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************#####***********************************************************************************************************###########################*********+++++====------------------------------=====----==++********++++++++++****################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################
************************************************************************************************+++++++++*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************+++************************+++++++++++++++++++++++++++++++********##*************+++++++++++++++++++++++++******#######################***********************************************************************************************+++++++****############****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**++++++**+++++++++++++++**######################################****+++++++++++++++++++++++++++++++++++++++****************************************************************++++++++++++++===================================================================================================+++++++++*****####**************+===============================+++++++++++++++++++++++++++++++++++++++++++++*********#########################*************#################################################################################################################################################################################################################++++++++++++====================================================+++++++++++++++++=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++*###**+============++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************#####***********************************************************************************************************###########################*********+++++=====-----------------------------======---===+**********++++++******################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################
************************************************************************************************++++++++++++++********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************+++++++++++++++++++++++++++++++********##**************++++++++++++++++++++++++******#######################************************************************************************************************+++++*****####%%######****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**++++++++++++++++++++++++*######################################****++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++=================================================================================================+++++++++****####****************+===============================+++++++++++++++++++++++++++++++++++++++++++++************#########################*********#################################################################################################################################################################################################################*++++++++++++==================================================++++++++++++++++++++=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++*###**+============+++++++++++++++++++==============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************************************************************************************************************************#####**********************************************************************************************************##############%#############*********+++++=====-----------------------------=======-===++*********************#################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
***********************************************************************************************++++++++++++++++++++++++***********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++********##***************++++++++++++++++++++++*******########################**************************************************************************************************++*****####%%%%####****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**+++++++++++++++++++++++++**#####################################****+++++++++++++++++++++++++++++++++++++++++**************************************************************+++++++++++++++================================================================================================++++++++++*######*****************+===============================+++++++++++++++++++++++++++++++++++++++++++++++++**********##########################******#################################################################################################################################################################################################################*++++++++++++=================================================+++++++++++++++++++++========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++*###**+============+++++++++++++++===================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************************************************************************************************************************#####*********************************************************************************************************###############%#############*********++++++====----------------------------============++***####************###################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
***********************************************************************************************+++++++++++++++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************++++++++++++++++++++++++++++++*********##***************++++++++++++++++++++++*******########################*********************************************************************************************************####%%%%####***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*++*+++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**+++++++++++++++++++++++++**#####################################****++++++++++++++++++++++++++++++++++++++++++*************************************************************+++++++++++++++================================================================================================+++++++++*######******************++==============================++++++++++++++++++++++++++++++++++++++++++++++++++***********###########################***#################################################################################################################################################################################################################++++++++++++==================================================++++++++++++++++++++++========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++*##***+============+++++++++++++=====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************####*******************************************************************************************************#################%#############*********++++++====----------------------------============++***######********#####################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++**********************+++++++*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************++++++++++++++++++++++++++++++*********##****************+++++++++++++++++++++*******########################**********************************************************************************************************###%%%%###****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*+*+*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**++++++++++++++++++++++++++**#####################################****+++++++++++++++++++++++++++++++++++++++++++*************************************************************++++++++++++++===============================================================================================+++++++++*######*******************+===============================+++++++++++++++++++++++++++++++++++++++++++++++++***************############################################################################################################################################################################################################################################++++++++++++=================================================+++++++++++++++++++++++=========================++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++*##***+============+++++++++++=======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************##*****************************************************************************************************###################%%%#############********++++++====----------------------------===========++****###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################
**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************+++++++++++++++++++++++++++++++*********##****************+++++++++++++++++++++*******#########################*********************************************************************************************************###%%%####****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**++++++++++++++++++++++++++**#####################################****++++++++++++++++++++++++++++++++++++++++++++************************************************************++++++++++++++===============================================================================================++++++++*######********************+===============================+++++++++++++++++++++++++++++++++++++++++++++++++++***************##########################################################################################################################################################################################################################################++++++++++++================================================++++++++++++++++++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++======+++++++++++++++++++++++++++===+++=++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++*#****+============+++++++++++=======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####*###################%%%#############********++++++====----------------------------====+++++++++***#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################
**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************+++++++++++++++++++++++++++++++*********#%*****************++++++++++++++++++++*********########################********************************************************************************************************####%%####****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%###########**+++++++++++++++++++++++++++**#####################################*****++++++++++++++++++++++++++++++++++++++++++++***********************************************************+++++++++++++++=============================================================================================++++++++*######*********************++==============================++++++++++++++++++++++++++++++++++++++++++++++++++++****************########################################################################################################################################################################################################################################++++++++++++===============================================+++++++++++++++++++++++++============================+++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++*##***+============+++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################%%%#############********++++++====----------------------------===+++++++++****#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################
**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++++++++++++++++++++++++++*********#%#****************++++++++++++++++++++**********######################*********************************************************************************************************#########*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%############**+++++++++++++++++++++++++++**#####################################*****+++++++++++++++++++++++++++++++++++++++++++++**********************************************************+++++++++++++++============================================================================================++++++++*#######*********************+===============================+++++++++++++++++++++++++++++++++++++++++++++++++++++*****************######################################################################################################################################################################################################################################++++++++++++===============================================+++++++++++++++++++++++++=============================+++++++++++++++++++++++++++++++++++++++++======++++++++++++++++++++++++++====================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++*##***+============+++++++============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################%%%#############********++++++====----------------------------==++++*+********#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################
**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++++++++++++++++++++++++++++++**********#%#****************++++++++++++++++++++******************###############********************************************************************************************************#########****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%############**+++++++++++++++++++++++++++**####################################******++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++===========================================================================================+=++++++*#######**********************+==============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************###################################################################################################################################################################################################################################*++++++++++++=============================================+++++++++++++++++++++++++++===============================+++++++++++++++++++++++++++++++++++++=====+++++++++++++++++++++++++++======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++*##***+============+++++===============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################%%%#############********++++++====---------------------------===+++*********#######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################
**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************++***********************++++++++++++++++++++++++++++++**********#%#*****************+++++++++++++++++++************************#########********************************************************************************************************########****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%###########***++++++++++++++++++++++++++++*####################################*******+++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++==============+++==========================================================================+++++++*#######***********************+==============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************################################################################################################################################################################################################################################*++++++++++++============================================+++++++++++++++++++++++++++==================================++++++++++++++++++++++++++++++++++====+++++++++++++++++++++++++==++==++++================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++*##***+================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################%%%#############********++++++====---------------------------===++*********########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################
***********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+++**********************++++++++++++++++++++++++++++++**********#%#*****************+++++++++++++++++++*************************#######*********************************************************************************************************#######*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++*+**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%###########***++++++++++++++++++++++++++++**###################################******+++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++============+++++========================================================================+++++++*########***********************+============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#############################################################################################################################################################################################################################+++++++++++++===========================================++++++++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++==++++++++++++++++++++++++=================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++*###**+==================================--============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################%%%%############********++++++====---------------------------===++*******##########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################
***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************+++++*********************++++++++++++++++++++++++++++++**********#%#******************++++++++++++++++++*****************************************************************************************************************************************######*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%##########****++++++++++++++++++++++++++++**###################################*******+++++++++++++++++++++++++++++++++++++++++++++++*******************+++***********************************++++++++++++++==========+++++++++++===================================================================+++++++*########************************+============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************###########################################################################################################################################################################################################################+++++++++++++==========================================+++++++++++++++++++++++++++++========================================++++++++++++++++++++++++++++++++++++++++++++++++++++====+++============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++*###**+================================-----===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################%%%%############********++++++====---------------------------===++****#############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################
***********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************++++++********************++++++++++++++++++++++++++++++**********#%#******************++++++++++++++++++****************************************************#*************************************************************************************###******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++**+++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%##########****++++++++++++++++++++++++++++**###################################*******++++++++++++++++++++++++++++++++++++++++++++++++******************++++**********************************+++++++++++++++=======+++++++++++++++================================================================+++++++*########*************************============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#########################################################################################################################################################################################################################++++++++++++++========================================+++++++++++++++++++++++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++==+==+++===+++===+====================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++*####*+===============================-------==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################%%%%############********++++++====---------------------------===++***##############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################
************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************+++++++*******************+++++++++++++++++++++++++++++***********#%#******************++++++++++++++++++***************************************************####************************************************************************+++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**++*++**+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##########****++++++++++++++++++++++++++++**###################################*******++++++++++++++++++++++++++++++++++++++++++++++++******************+++++*********************************++++++++++++++++======++++++++++++++++==============================================================+++++++**#######**************************============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#######################################################################################################################################################################################################################*+++++++++++++++======================================++++++++++++++++++++++++++++++===============================================+++++++++++++++++++++++++++++++++++++++++++++==++++====+=========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++*####*+==============================---------=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################%%%%############********++++++====---------------------------===++***###############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################
***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+++++++*******************++++++++++++++++++++++++++++++**********#%#******************+++++++++++++++++++***********++++++*******************************#######************************************************************++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##########****++++++++++++++++++++++++++++**#%#################################*******++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++**********************************+++++++++++++++++++++++++++++++++++++==============================================================++=+++*########***************************============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#####################################################################################################################################################################################################################*+++++++++++++++=====================================++++++++++++++++++++++++++++++==========================================================+++++++++++++++++++++++++++++++++++========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++*####*+=============================-----------=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++**********++++++++************+++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################%%%%############********++++++=====--------------------------===++***###############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################
************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+++++++*******************+++++++++++++++++++++++++++++***********#%#******************+++++++++++++++++++**********+++++++++++***************************########******************************************************+++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##########****++++++++++++++++++++++++++++**#%################################*********+++++++++++++++++++++++++++++++++++++++++++++++++***************++++++**********************************+++++++++++++++++++++++++++++++++++++++===========================================================++++++**####*******************************============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************####################################################################################################################################################################################################################+++++++++++++++++===================================++++++++++++++++++++++++++++++==========================================================++++++++++++++++++++++++++++++++++++========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++*#####*============================------------==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++**********++++++++************+++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################%%%%############********++++++=====--------------------------===++***###############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################################################
************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************+++++++*******************+++++++++++++++++++++++++++++***********#%#******************+++++++++++++++++++*********+++++++++++++++************************#########**************************************************++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%%%%%%%%%%%%##########****++++++++++++++++++++++++++++**##################################*********++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++*********************************+++++++++++++++++++++++++++++++++++++++==========================================================++=++++*####********************************=============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#################################################################################################################################################################################################################*+++++++++++++++++=================================++++++++++++++++++++++++++++++++=========================================================+++++++++++++++++++++++++++++++++++++========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++*#####*+===========================------------=======++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++******************************+++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################%%%%############********++++++=====--------------------------===++***###############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%#######################################################################################################################################################################
************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++******************+++++++++++++++++++++++++++++***********#%#******************+++++++++++++++++++********+++++++++++++++++++++++++++++++*********##########************************************************+++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%##########****++++++++++++++++++++++++++++**##%###############################*********++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++*********************************++++++++++++++++++++++++++++++++++++++++========================================================+++++++#####*********************************=============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************###############################################################################################################################################################################################################*++++++++++++++++++++++==========================+++++++++++++++++++++++++++++++++=======================================================++++++++++++++++++++++++++++++++++++++++========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++*#####*+=============================-----------=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++******************************++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################%%%%############********++++++=====--------------------------===++***###############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%#########################################################################################################################################################################
*************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++******************+++++++++++++++++++++++++++++***********#%#******************++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++****##########***********************************************++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%##########****++++++++++++++++++++++++++++*###%###############################*********++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++**********************************++++++++++++++++++++++++++++++++++++++++=========================================================++++*####**********************************=============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************###############################################################################################################################################################################################################+++++++++++++++++++++++++==--==================+++++++++++++++++++++++++++++++++++=====================================================++++++++++++++++++++++++++++++++++++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++**######*++++===============+++++++======----------=======+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+*******************************++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################%%%%############********++++++=====--------------------------===++***###############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%############################################################################################################################################################################
*************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+++++++******************+++++++++++++++++++++++++++++***********#%#******************++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++***#############*******************************************+++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++**+**+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%##########****++++++++++++++++++++++++++++*###%###############################*********+++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++**********************************+++++++++++++++++++++++++++++++++++++++++========================================================+++*####***********************************==============================++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************#############################################################################################################################################################################################################*++++++++++++++++++++++++++====================++++++++++*+*********++++++++++++++++=================================================+++++++++++++++++++++++++++++++++++++++++++++============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###%##*++++++===+++++++===+++++++++++====--------=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###########################%%%%%#############*******++++++=====---------------------------==++***###############################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************+++++++******************+++++++++++++++++++++++++++++***********#%#*******************+++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++***###############******************************************++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*+++*++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##########****++++++++++++++++++++++++++++*###%###############################**********++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++**********************************++++++++++++++++++++++++++++++++++++++++++======================================================+++*####************************************==================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************####**####################################################################################################################################################################################################*++++++++++++++++++++++++++====++++++======++++++++++++*************++++++++++++++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###%##*+++++++++++++++++==++++++++++++++===-------=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###########################%%%%%#############*******++++++=====---------------------------==++***###############################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++******************+++++++++++++++++++++++++++++***********#%#*******************++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++***#################*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++**+**+**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##########****++++++++++++++++++++++++++++*###%###############################**********++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++**********************************++++++++++++++++++++++++++++++++++++++++++========================++++=========================+++*####*************************************==================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#####################################################################################################################################################################################################****+++++++++++++++++++++++++==++++++++++++++++++++++++*************+++++++++++++++++++++++++====================================++++++++++++++++++++++++++++++++++++++++++++++++++============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###%%#*++++++++++++++++++==++++++++++++++==----------======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###########################%%%%%#############*******++++++=====---------------------------==++***###############################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++******************+++++++++++++++++++++++++++++***********#%#*******************+++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++***####%%#################***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+*+**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*****+++++++++++++++++++++++++++*###%###############################**********+++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++**********************************++++++++++++++++++++++++++++++++++++++++++++====================+++++++++=====================+++*####*************************************+====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************##############################################################################################################################################################################################******++++++++++++++**++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++=================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%##+++++++++++++++++++==++++++++++**++==-----------====+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++****************************************************************************************************************************************************************************************************************************########****************************************************************************************************************************************************************************************************************###########################%%%%%#############*******++++++=====---------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************++++++++++++++++++++**********+++++++++++++++++++++++++++++***++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************+++++++******************+++++++++++++++++++++++++++++***********#%#*******************+++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++***###%%%%%###########################******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************++*++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@%@%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*****+++++++++++++++++++++++++++*###%################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++***********************************+++++++++++++++++++++++++++++++++++++++++++==================+++++++++++===================+==+**###**************************************+====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************#########################################################################################################################################################################################*********++++++++********++++++++++++++++++++++++++*******************++++++++++++++++++++++++++=============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%##+++++++++++++++++++==++++++++++**+++==-------------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************##########***************************************************************************************************************************************************************************************************************###########################%%%%%%############*******++++++=====---------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************++++++++++++++++++***********++++++++++++++++++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************++++++++*****************+++++++++++++++++++++++++++++***********#%%*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%#########################*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+*++**++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*****+++++++++++++++++++++++++++*###%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++***********************************++++++++++++++++++++++++++++++++++++++++++++===============++++++++++++++==================+=+*#####**************************************+====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************#*########################################################################################################################################################################****************************+++++++++++++++++++++*********************++++++++++++++++++++++++++++=========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%##+++++++++++++++++++++=++++++++***++++=--------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************##############***##********************************************************************************************************************************************************************************************************###########################%%%%%%############*******++++++=====---------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************+++++++++++++++++************+++++++++++++++++++++++++*++++*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++*****************+++++++++++++++++++++++++++++***********#%%*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%#########################**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+**++**++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*****+++++++++++++++++++++++++++*##%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++=============+==+==+**####***************************************+=======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************#########################################################################********#############################################################################*********************************+++++++++++++++++**********************++++++++++++++++++++++++++++++==========+=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+***##%%##*++++++++++++++++++++==+++++++*#*+++++=-:-:----------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************#########################****************************************************************************************************************************************************************************************************###########################%%%%%%############*******++++++=====---------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************+++++++++++++++**************++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************++++++++*****************+++++++++++++++++++++++++++++***********#%%*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%######################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************++**++++*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******++++++++++++++++++++++++++*###%#################################********++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++***********************************++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++++++++++=============+==+=+*#####****************************************+=======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************##########################################################********************##################################********##############################************************************+++++*********************************+++++++++++++++++++++++++++++++++++=====+======++++++++++++++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+***##%%##*+++++++++++++++++++++=+++++++*#*+++++=-::::::--------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************#######################################*******************************************************************************************************************************************************************************************###########################%%%%%%############*******++++++======--------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************+++++++++++++++*************+++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++++++****************++++++++++++++++++++++++++++************#%%#******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%##################*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************++++***+*+*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++**###%#################################********++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++=====+++++++++++++++++++++================+*#####*****************************************+=======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************################################################****************************#####################********************************************###***************************************************************************++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++++++++++===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*##%%##*+++++++++++***+++++++++++++++*#**+++++=-::::::--------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************###########################################****************************************************************************************************************************************************************************************###########################%%%%%%############*******++++++======--------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************++++++++++++++*************+++++++++++++++++++++++++++++++++*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************+++++++++****************++++++++++++++++++++++++++++************#%%#******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%#######**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************++****+****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++**###%##################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+===++#####******************************************+=======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************###############################*******************************************#############*******************************************************************************************************************************+++++++++++++++++++++++++++++++++++=====+=+++++++++++++++++++++++========================++++++++++++++++++++++++++++++++====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##*++++++++++*****+++++++++++++**##*+++++=-::::::::-------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++**************************************************************************************************************************************************************************************************************************************############################################****************************************************************************************************************************************************************************************###########################%%%%%%############*******++++++======--------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************+++++++++++++************++++++++++++++++++++++++++++++++++*+***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************+++++++++****************++++++++++++++++++++++++++++************#%%#******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+*****+*+**+*+**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++**###%##################################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++++++===========+==+#####*******************************************+=======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************######################****************************************************##***************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================++++++========++++++++++++++++====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##++++++++++*******++++++++++++*###*++++++=::::::::::------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++**************************************************************************************************************************************************************************************************************************************#############################################***************************************************************************************************************************************************************************************###########################%%%%%%############*******++++++======--------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************++++++++++************++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+++++++++++**************+++++++++++++++++++++++++++++************#%%#******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####%%%%%%%%%%%%%%%%%%%%%%%%%%%####*************************************++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+*****++*****************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++**##%%%#################################********++++++++++++++++++++++++++++++++++++++++++++++++++++************++*++*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++===++++++++++++++++==+==+==+====+#####********************************************+========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************###########****************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================++++++++++++========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##++++++++++********+++++++++++*###*++++++=:::::::::::------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++*************************************************************************************************************************************************************************************************************************************###############################################***************************************************************************************************************************************************************************************##########################%%%%%%############*******++++++======--------------------------==++***################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************++++++++++++********++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++**************+++++++++++++++++++++++++++++************#%%#******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***********************************++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++**##%%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++==++=++=+==+#####*********************************************+========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************#######*********************************************************************************************************************************************#########################*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================++++++++++++========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##++++++++++********++++++++++*#####++++++=-::::::::::::::---=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************###############################################***************************************************************************************************************************************************************************************##########################%%%%%%############*******++++++======--------------------------==++***################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++**************+++++++++++++++++++++++++++++************#%%#******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*****+++++++++******************++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++**##%%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++************+++**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++==+====+#####**********************************************+========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************########************************************************+**********************************+++++++++++++++++++++++++++++++************************************#############################*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++========================================================+++++++++++=========================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##++++++++++*********+++++++++*#####+++++++-:::::::::::::::---=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************################################################***************************************************************************************************************************************************************************************##########################%%%%%%############*******++++++======--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++++++**************+++++++++++++++++++++++++++++************#%%#*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%###****++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************+***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++*###%%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++=++==++=+*#####**********************************************+=========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************++++++++++++++++++++++*******************+++++++++++++++++++++++++++++++++++++++++************************************################################***********************+++++++++++++++++++++++++++++++++++++++++++++++++=========================================================++++++++++===========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%#*++++++++++**********++++++++*#####+++++++-:::::::::::::::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************################################################**************************************************************************************************************************************************************************************###########################%%%%%%%###########*******++++++======--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++***************++++++++++++++++++++++++++++************#%%#*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%###****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++************************************+*****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++*###%%%#################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++=+==+=++######***********************************************==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************################################********************+++++++++++++++++++++++++++++++++++++++++++++++============================================================++++++=============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%#*++++++++++**********++++++++*#####*++++++-:::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+++++++++++++++++++++++++++++++++++++++*++*************************************************************************************************************************************************************************************************************************************************########################################################*************************************************************************************************************************************************************************************###########################%%%%%%%###########********+++++======--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++**************++++++++++++++++++++++++++++************#%%#*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%###****++++++++++++++++++++++++++++++++==============+++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++*************************************+**+**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++*###%%%#################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++=====+######************************************************==========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************###################################****************++++++++++++++++++++++++++++++++++++++++++++==============================================================+++++===============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++**********++++++++*#####*++++++-::::::::::::::::::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************#########################################################*************************************************************************************************************************************************************************************###########################%%%%%%%###########********++++++=====--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++**************++++++++++++++++++++++++++++************#%%#*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##%%%%%%%%%%%%%%%%%%%%%%%%%%%####****+++++++++++++++++++++++++++++======================+++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++***********************************+***+**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++*###%%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++==*######*************************************************==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************######################################**************+++++++++++++++++++++++++++++++++++++++++=================================================================++++================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++++**********++++++++###**+++++++-::::::::::::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************############################################################*************************************************************************************************************************************************************************************###########################%%%%%%%###########********++++++=====--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++**************++++++++++++++++++++++++++++************#%%#*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%####****++++++++++++++++++++++++++++============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++**********************************************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++*###%%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######**************************************************==========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************###*******###########################***********+++++++++++++++++++++++++++++++++++++++===================================================================++++================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####*+++++++++++**********++++++++**++++==--==--::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************############################################################************************************************************************************************************************************************************************************############################%%%%%%%###########********++++++=====--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++++++++**++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++**************++++++++++++++++++++++++++++************#%%#*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%###*****+++++++++++++++++++++++++++++=+===============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%@@@@@@@%%%%%%%%%%%%%%%@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*******+++++++++++++++++++++++++*###%%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######**************************************************+===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************###########################**********++++++++++++++++++++++++++++++++++++=======================================================================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####*+++++++++++**********++++++++++++++==-----:::::::::::::::::::---==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+****+++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************###############################################################*************************************************************************************************************************************************************************************###########################%%%%%%%############*******++++++=====--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++++***+++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++**************++++++++++++++++++++++++++++************#%%#*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####%%%%%%%%%%%%%%%%%%%%%%%%%###*****++++++++++++++++++++++++++++++++========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************+**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%@@@@@@%%%%%%%%%%%%%%%@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*******++++++++++++++++++++++++**###%%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++=+=+*######***************************************************+===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************###########################*********++++++++++++++++++++++++++++++++++====================================================================================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####*+++++++++++**********++++++++++++++==------::::::::::::::::::-----==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+****+++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************###############################################################*************************************************************************************************************************************************************************************###########################%%%%%%%############*******++++++=====--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++++***********************++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##*****++++++++++**************++++++++++++++++++++++++++++************#%%#*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###%%%%%%%%%%%%%%%%%%%%%%%%####*****+++++++++++++++++++++++++++++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%@@@@@@@%%%%%%%%%%%%%%%@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*******++++++++++++++++++++++++**###%%%%#################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######****************************************************+==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************#########################*********+++++++++++++++++++++++++++++++=======================================================================================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####*++++++++++***********++++++++++++++==------:::::::::::::::::::------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+******+++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************################################################################*************************************************************************************************************************************************************************************###########################%%%%%%%############*******++++++=====--------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##*****++++++++++**************++++++++++++++++++++++++++++*************%%#*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****####%%%%%%%%%%%%%%%%%%%%%%#####*********++++++++++*****+++++++++++++++++++++=========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+**++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########********+++++++++++++++++++++++**###%%%%#################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*****************************************************+==========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************####################*************++++++++++++++++++++++++++==========================================================================================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####*++++++++++***********++++++++++++++==------::::::::::::::::::::------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*********+++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************#################################################################*************************************************************************************************************************************************************************************###########################%%%%%%%############******+++++++=====--------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##*****++++++++++**************+++++++++++++++++++++++++++**************%%#*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####%%%%%%%%%%%%%%%%%%%%%%####****************************++++++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+**+**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%@@@@@@%%%%%%%%%%%%@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########********+++++++++++++++++++++++**###%%%%#################################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######******************************************************+=========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************###################**************++++++++++++++++++++++++=============================================================================================================================++++++++======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####*++++++++++***********++++++++++++++==-----:::::::::::::::::::::::::::-=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*********+++++++++++++++++++******************************************************************************************************************************************************************************************************************************************************##################################################################*************************************************************************************************************************************************************************************###########################%%%%%%%############******+++++++=====--------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++**************++++++++++++++***+++++++++***************%%#*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****####%%%%%%%%%%%%%%%%%%%%####*********************************++++++++++++++++++++++++++++++================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+*****++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%@@@@@@%%%@%%%%%%@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*********++++++++++++++++++++++**###%%%%##################################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++*######*******************************************************+=========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************#################**************+++++++++++++++++++++++==============================================================================================================================++++++++++===================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++++++==----:::::::::::::::::::::::::::::-=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************+*****************************************************************************************************************************************************************************************************************************************************#####################################################################*************************************************************************************************************************************************************************************###########################%%%%%%%############******+++++++======-------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++**********************************+++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++**************++++++++++++*****************************%%#*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####%%%%%%%%%%%%%%%%%#####************************************++++++++++++++++++++++++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************+**+**+***+**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%@@@@@@%%@@@%%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**********++++++++++++++++++++***###%%%%##################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######********************************************************+=========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************##############****************++++++++++++++++++++++++===============================-------================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++===============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++++++==----::::::::::::::::::::::::::::::-=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************#####################################################################**************************************************************************************************************************************************************************************###########################%%%%%%%############*******++++++======-------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++**********************************+++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++**************+++++++++++******************************%%#*******************++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++****#####%%%%%%%%%%%%%%%%#####*****************************************+++++++++++++++++++++++++++++++++++===========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%@@@@@@@%%@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***********+++++++++++++++++++***###%%%%##################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######*********************************************************+========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************###########*****************+++++++++++++++++++++++++===========================-----------===============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++++++==----::::::::::::::::::::::::::::::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************######################################################################**************************************************************************************************************************************************************************************###########################%%%%%%%############*******++++++======-------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++*************************************++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++*************++++++++++*******************************%%%*******************++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++****######%%%%%%%%%%%%#######**********************************************+++++++++++++++++++++++++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%@@@@@@%%@@%@%%%%@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########************++++++++++++++++++***###%%%##################################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************###**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######**********************************************************+=======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************#######*****************+++++++++++++++++++++++===========================------------===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++*+++==----::::::::::::::::::::::::::::::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+********+********************************************************************************************************************************************************************************************************************************************************************######################################################################************************************************************************************************************************************************************************************#############################%%%%%%%############******+++++++======-------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++*************+++++++++******############**************%%%*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#######%%%%%%%#########**************************************************+++++++++++++++++++++++++++++++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%@@@@@@%@@@%@%%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*************+++++++++++++++*****###%%%##################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#####***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######***********************************************************+=======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************####*****************++++++++++++++++++++++++=======================----------------===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++++++==----::::::::::::::::::::::::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++******++**********************************************************************************************************************************************************************************************************************************************************######################################################################************************************************************************************************************************************************************************************#############################%%%%%%%%###########*******++++++======-------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++**********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++*************+++++++++*****#################**********%%%*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###################**********************************************************++++++++++++++++++++++++++++++++++=========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%@@@@@@@%@@@%@%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++*******###%%%##################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#######*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++=+*######***********************************************************+========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************+++++++++++++++++++++++++====================-------------------===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++++++==---:::::::::::::::::::::::::::::::---=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++*******************************************************************************************************************************************************************************************************************************************************************########################################################################***********************************************************************************************************************************************************************************#############################%%%%%%%%###########*******++++++======-------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++*************+++++++++****###################*********%%%*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#################****************************************************************+++++++++++++++++++++++++++++++++++++++==========+=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************+**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%@@@@@@@%@@%%@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########****************+++++++++*********##%%%%##################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************########********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######************************************************************+========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************++++++++++++++++++++++++++======================-==--------------==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++************+++++++++++++==---:::::::::::::::::::::::::::::::---=++**+++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************#########################################################################***********************************************************************************************************************************************************************************#############################%%%%%%%%###########*******++++++======-------------------------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++*************+++++++++****#####%%%###########*********%%%#******************++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++*******############**********************************************************************++++++++++++++++++++++++++++++++++++++========++++++++======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@@@@@@%@@%%@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**********************************##%%%%#################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#########********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######*************************************************************+========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************+++++++++++++++++++++++++++===========================-----------===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++************+++++++++++++==---:::::::::::::::::::::::::::::::---=+++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+****************************************************************************************************************************************************************************************************************###########################################################################***********************************************************************************************************************************************************************************#############################%%%%%%%%###########*******++++++======-------------------------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++++************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++************++++++++++*****####%%%%%%%#######*********%%%#******************++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++=+++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%@@@@@@@@%@@%%@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**********************************##%%%%#################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************###########******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######**************************************************************+========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++++============================---------===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++++++==---:::::::::::::::::::::::::::::::---=+++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************###########################################################################***********************************************************************************************************************************************************************************#############################%%%%%%%%###########*******++++++======-------------------------===+***#################################################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++***************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++************+++++++++++****#####%%%%%%%%#####*********%%%#******************++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%@@@@@@@%%@@%%@@@%%@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**********************************##%%%%#################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************###########******************++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++*######***************************************************************+========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+************************************++++++++++++++++++++++++++++===============================---=============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********+++++++++++++==---::::::::::::::::::::::::::::::::---=++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************###############################################################################***********************************************************************************************************************************************************************************#############################%%%%%%%%###########******+++++++======-------------------------===+***#################################################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++****####%%%%%%%%#####*********%%%#******************++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++*************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@%@@@@@@%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**********************************##%%%%#################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************############******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######****************************************************************+========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++===============================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++++===---::::::::::::::::::::::::::::::::---=++*******++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************###############################################################################***********************************************************************************************************************************************************************************#############################%%%%%%%%###########******+++++++======-------------------------===+***#################################################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++****###%%%%%%%%#####*********#%%#*******************++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************++++++++++++*++++***************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%@@@@@@@%%@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*******************************####%%%%%%################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######*****************************************************************+======================================++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************++++++++++++++++++++++++++++++==============================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++***********+++++++++++====----::::::::::::::::::::::::::::::::---=+++*********++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************###################################################################################*************************************************************************************************************************************************************************************###########################%%%%%%%%###########*******++++++======-------------------------===+***#################################################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++****###%%%%%%%%#####*********#%%#*******************++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%@@@@@@@%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############********##############%%%%%%%%%%%%%%%%%%%################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######******************************************************************+======================================+++++++++++++++++++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************+++++++++++++++++++++++++++++++=============================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++***********+++++++++=====----:::::::::::::::::::::::::::::::::---=+++*******##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************###################################################################################*************************************************************************************************************************************************************************************###########################%%%%%%%%###########*******++++++======--------------------------==+***#################################################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++***####%%%%%%%#####*********#%%#*******************++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++===============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%@@@@@@@@@%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%##############################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#############*****************+++++++++++++++++++++++++++++++++++++++++++++++++++=+*######*******************************************************************+====================================++++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++++++++++=============================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++***********++++++++====-----::::::::::::::::::::::::::::::::::---=+++********#****++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************###################################################################################************************************************************************************************************************************************************************************############################%%%%%%%%###########******+++++++======--------------------------==+***##################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++****###%%%%%%%#####*********#%%#*******************++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#############******************+++++++++++++++++++++++++++++++++++++++++++++++++++*######********************************************************************+====================================++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++===========================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++***********++++++=====-----:::::::::::::::::::::::::::::::::::---==++********#*****++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************###################################################################################************************************************************************************************************************************************************************************############################%%%%%%%%###########******+++++++======--------------------------==+***##################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++***###%%%%%%%#####*********#%%#*******************++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@@@@@@@@%%@@%%%@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************##############******************+++++++++++++++++++++++++++++++++++++++++++++++++*#######********************************************************************+=================================++++++++++++++++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++++==========================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++************+++++=====-----::::::::::::::::::::::::::::::::::::---==++********#*******++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************#####################################################################################***********************************************************************************************************************************************************************************############################%%%%%%%%###########******+++++++======--------------------------==+***##################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++***###%%%%%%%#####*********#%%#******#************++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@%%%%%%%%%%%%%@@@@@%%%%%%%%%%###############################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#############*******************+++++++++++++++++++++++++++++++++++++++++++++++*#########*******************************************************************+================================++++++++++++++++++++++++++++++++++++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*+++++++***********+++++=====-----:::::::::::::::::::::::::::::::::::::---==++********#*********+++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************++++++******************************************************************************************************######################################################################################**********************************************************************************************************************************************************************************#############################%%%%%%%%###########******++++++++======-------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++***###%%%%%%%#####*********#%%#******#************++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%#%##%############################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************##############******************++++++++++++++++++++++++++++++++++++++++++++++*##########*******************************************************************================================++++++++++++++++++++++++++++++++++++++++++***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*+++++++***********++++=====-----:::::::::::::::::::::::::::::::::::::::--==++********#************++++++++++++++++++++++***+****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************++++++++++****************************************************************************************************######################################################################################**********************************************************************************************************************************************************************************#############################%%%%%%%%###########*******+++++++======-------------------------==++***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++***###%%%%%%%#####*********#%%#******#************+++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@%%@@@%@@@@%@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@%%%%%%%%#%%#%############################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************##############******************++++++++++++++++++++++++++++++++++++++++++++++###########*******************************************************************================================+++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*+++++++***********++++=====----::::::::::::::::::::::::::::::::::::::::--==++*************************+++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************+++++++++++***************************************************************************************************######################################################################################**********************************************************************************************************************************************************************************#############################%%%%%%%%###########*******+++++++======-------------------------==++***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++***###%%%%%%%#####*********#%%#******#************+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************#**************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@%%%%%%%%%%################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************##############*******************++++++++++++++++++++++++++++++++++++++++++++############******************************************************************+=+===========================+++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####***+++++++*********++++=====-----::::::::::::::::::::::::::::::::::::::::--==++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************++++++++++++++***********************************************************************************************########################################################################################*******************************************************************************************************************************************************************************################################%%%%%%%%###########*******+++++++======-------------------------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++***###%%%%%%%#####*********#%%#******#************+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@%%%%%%%%%%################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************###############******************+++++++++++++++++++++++++++++++++++++++++++*############******************************************************************+=============================++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####***+++++++*********+++=====-----:::::::::::::::::::::::::::::::::::::::::--==++*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+++++++++++++++***********************************************************************************************#########################################################################################******************************************************************************************************************************************************************************################################%%%%%%%%###########*******+++++++======--------------------------==++**##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++***###%%%%%%%#####*********#%%#******#************+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@%%%%%%%%%%################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************###############******************++++++++++++++++++++++++++++++++++++++++++*#############******************************************************************+===========================++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================------=============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####****+++++**********+++===-------:::::::::::::::::::::::::::::::::::::::::--==++******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************++++++++++++++++**********************************************************************************************#########################################################################################*******************************************************************************************************************************************************************************###############################%%%%%%%%###########*******+++++++======--------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++***###%%%%%%%#####*********#%%%******#************+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@%%@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@%%%%%%%%%%%%##############################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************###############*****************+++++++++++++++++++++++++++++++++++++++++*###############*****************************************************************+=========================+++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================--------===========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####****+++++**********++===--------:::::::::::::::::::::::::::::::::::::::::---=++*******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************+++++++++++++++++********************************************************************************************##########################################################################################*******************************************************************************************************************************************************************************###############################%%%%%%%%###########*******+++++++======--------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++***###%%%%%%%#####*********#%%%******#************+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@%@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%%##############################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************###############******************+++++++++++++++++++++++++++++++++++++++*################*****************************************************************+=========================+++++++++++++++++++++++++++++++++***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================-==================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****++++*********+++===-------::::::::::::::::::::::::::::::::::::::::::---=++********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************+++++++++++++++++++*******************************************************************************************##########################################################################################******************##***********************************************************************************************************************************************************###############################%%%%%%%%###########*******+++++++======--------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++***###%%%%%%%#####*********#%%%******##***********+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@%%%%%%%%%%%%%%###############################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************################*****************+++++++++++++++++++++++++++++++++++++++##################****************************************************************+=======================++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****++++*********+++==-------:::::::::::::::::::::::::::::::::::::::::::---=++*********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+++++++++++++++++++++*******************************************************************************************###########################################################################################****************####**********************************************************************************************************************************************************###############################%%%%%%%%###########*******+++++++======--------------------------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++***####%%%%%%#####*********#%%%******##***********+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@%%%%%%%%%%%%%%%%##############################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************################*****************++++++++++++++++++++++++++++++++++++++*##################***************************************************************+====================++++++++++++++++++++++++++++++++++***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******++++********+++==------::::::::::::::::::::::::::::::::::::::::::::---=+++**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++******************************************************************************************###########################################################################################***************#####***********************************************************************************************************************************************************##############################%%%%%%%%###########*******+++++++======---------------------------==+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++***####%%%%%%#####*********#%%%******##***********+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%%%%%%%%%%%%%##%%%############################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************################****************+++++++++++++++++++++++++++++++++++++*###################***************************************************************+===================++++++++++++++++++++++++++++++++***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******++++********++==-------::::::::::::::::::::::::::::::::::::::::::::---=+++*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************++++++++++++++++++++++******************************************************************************************###########################################################################################***************#####***********************************************************************************************************************************************************##############################%%%%%%%%############******+++++++======---------------------------==++**##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################%%##########################################################%############################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++****####%%%%%%######********#%%%******##***********++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###############################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************##################****************+++++++++++++++++++++++++++++++++++*####################***************************************************************+===+===============++++++=====++++++++=++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******+++++*******++==-----::::::::::::::::::::::::::::::::::::::::::::::---==++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++****************************************************************************************##############################################################################################*************#######********************************************************************************************************************************************************###############################%%%%%%%%############******+++++++======---------------------------==++**##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################%%%########################################################%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++****####%%%%%%######********#%%%******##***********++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++**********************************************************************+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%###############################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#################****************+++++++++++++++++++++++++++++++++++*#####################**************************************************************++=================++++++++++++++++==++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*******+++********++==----:::::::::::::::::::::::::::::::::::::::::::::::---==++*******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++****************************************************************************************##############################################################################################*************#######********************************************************************************************************************************************************###############################%%%%%%%%############*****++++++++======---------------------------==++**##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################%%%########################################################%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++****####%%%%%%######********#%%%******##***********++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************+*++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%##%%###########################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#################****************++++++++++++++++++++++++++++++++++*#####################***************************************************************+==================++++++++++++++++++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*******+++********++==---::::::::::::::::::::::::::::::::::::::::::::::::---==++**************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************++++++++++++++++++++++++++****************************************************************************************##############################################################################################*************#######********************************************************************************************************************************************************###############################%%%%%%%%############*****++++++++======---------------------------==++**##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################%%%########################################################%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++****####%%%%%%######********#%%%******##***********++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************++*++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%@%%@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%###########################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************##################***************+++++++++++++++++++++++++++++++++*######################***++**********************************************************+==================++++++++++++++++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*******+++********++==---::::::::::::::::::::::::::::::::::::::::::::::::---==++**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++++++***************************************************************************************#################################################################################################********#########********************************************************************************************************************************************************###############################%%%%%%%%%###########*****++++++++======---------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################%%%%#######################################################%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++*****###%%%%%%######*********%%%******##***********++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************+++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##%##########################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************#################****************+++++++++++++++++++++++++++++++*######################*+++==**********************************************************+=================++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####********++********++==---:::::::::::::::::::::::::::::::::::::::::::::::::--==++*****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************++++++++++++++++++++++++++++++++***************************************************************************************##################################################################################################################*********************************************************************************************************************************************************##############################%%%%%%%%%###########*****+++++++=======---------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################%%@%#######################################################%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++******####%%%%%######*********%%%#*****##***********++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************++****++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************##################***************+++++++++++++++++++++++++++++++#####################**+====+**********************************************************++===============++++++++++++++=++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*********++*******++==--::::::::::::::::::::::::::::::::::::::::::::::::::--==++*************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++***************************************************************************************##################################################################################################################*********************************************************************************************************************************************************##############################%%%%%%%%%###########*****++++++========---------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################%%@%#######################################################%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++******####%%%%%######*********%%%#*****##***********++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************+++++++*+++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************##################****************+++++++++++++++++++++++++++++*####################*+======+***********************************************************+===============+++++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*********++*******++==--::::::::::::::::::::::::::::::::::::::::::::::::::--==++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++**************************************************************************************##################################################################################################################*********************************************************************************************************************************************************##############################%%%%%%%%############*****+++++=========---------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################%%@@%######################################################%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************+++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++******####%%%%%######*********%%%#*****##***********++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************+**++**+++**++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************###################****************+++++++++++++++++++++++++++*####################++=======+***********************************************************+=+============+++++++++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*********+********++==--::::::::::::::::::::::::::::::::::::::::::::::::::--==++***********************************************************************************************************************************+++++++++++++++++++++++++****************************+++++++++++++++++++++++++++++++++++++++**************************************************************************************##################################################################################################################**********************************************************************************************************************************************************#############################%%%%%%%%############*****+++++=========---------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%###############################################################################################################################################################%@%@%######################################################%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++*******####%%%%%%######********%%%#*****##***********++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************+++++++++++**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************###################*****************+++++++++++++++++++++++++*####################+=========**********************************************************+**+=+=+========+==++++=++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****************+++==--::::::::::::::::::::::::::::::::::::::::::::::::::--==++******************************************************************************************************************************************+++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++++*************************************************************************************###################################################################################################################**********************************************************************************************************************************************************#############################%%%%%%%%%###########*****+++++=========---------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%################################################################################################################################################################%%%@%%######################################################%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++********###%%%%%%######********%%%#*****##***********++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************++++++++++********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************###################******************+++++++++++++++++++++++*####################+=========+**********************************************************+**+=+==+=======++++=+++++=+++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****************+++==--::::::::::::::::::::::::::::::::::::::::::::::::::---=++***********************************************************************************************************************************************++++++++++*****************************++++++++++++++++++++++++++++++++++++++++++************************************************************************************###################################################################################################################***********************************************************************************************************************************************************############################%%%%%%%%%###########*****++++===========--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%################################################################################################################################################################%%@@@%%#####################################################%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++*********###%%%%%%######********%%%#*****##***********++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************++++++++*****++*****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************####################******************+++++++++++++++++++++*####################+==========+**********************************************************++**+++=========+++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****************+++==--::::::::::::::::::::::::::::::-:::::::::::::::::::---==++************************************************************************************************************************************************************************************++++++++++++++++++++++++++==+++++++++++++++***********************************************************************##***********####################################################################################################################**********************************************************************************************************************************************************############################%%%%%%%%%###########*****++++===========--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%##################################################################################################################################################################%%@@@@%#####################################################%%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++*********####%%%%%######********%%%#*****##***********++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+++++++***********++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************####################********************++++++++++++++++++**###################+===========+**********************************************************++**++=+======++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****************+++==--::::::::::::::::::::::::::::::-:::::::::::::::::::---==++************************************************************************************************************************************************************************************+++++++++++++++++++++++++====+++++++++++++++*********************************************************************#####********#####################################################################################################################***********************************************************************************************************************************************************###########################%%%%%%%%%###########*****++++==========-------==------------------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%####################################################################################################################################################################%%@@@@%#####################################################%%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++**********####%%%%%%######*******%%%#****###***********++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++********+***+****+**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************####################***********************++++++++++++++**###################*+===========***********************************************************+++**+=+===++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************++==--::::::::::::::::::::::::::::::=-::::::::::::::::::---==++***********************************************************************************************************************************************************************************++++++++++++++++++++++++++=====++++++++++++++*********************************************************************######################################################################################################################################*********************************************************************************************************************************************************#########################%%%%%%%%%############****++++===========---=======----------------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%######################################################################################################################################################################%%@@@@%%####################################################%%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++***********###%%%%%%######*******%%%#****###***********++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************++++*********++***+*******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************####################*************************++++++++*+**###################*+============**********************************************************++++**++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************++==--::::::::::::::::::::::::::::::=-::::::::::::::::::---==++***********************************************************************************************************************************************************************************+++++++++++++++++++++++++======+++++++++++++++********************************************************************#######################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%%############****++++======================---------------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%########################################################################################################################################################################%%@@@@@%#####################################################%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++************###%%%%%%######*******%%%#****#%##**********+++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************++++************++***********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************######################**********************************###################*+============+**********************************************************+++++**++++++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************++==---:::::::::::::::::::::::::::::==::::::::::::::::::---==++**********************************************************************************************************************************************************************************++++++++++++++++++++++++++=======+++++++++++++++******************************************************************########################################################################################################################################*********************************************************************************************************************************************************########################%%%%%%%%%############*****+++=======================--------------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%############################################################################################################################################################################%%@@@@@%#####################################################%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++************####%%%%%%#####*******%%%#****#%##**********+++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************++++****************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@%%@%%@@@@@@%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************#######################********************************###################*+=============+**********************************************************+++++**++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************++==---:::::::::::::::::::::::::::::==::::::::::::::::::---==++**********************************************************************************************************************************************************************************++++++++++++++++++++++++++=======+++++++++++++++******************************************************************#########################################################################################################################################********************************************************************************************************************************************************########################%%%%%%%%%############*****+++==================+=====-------------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################%%@@@@@%%####################################################%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++*************####%%%%%%#######*****#%%#****#%%#**********+++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************####################*###******************************###################*+==============+**********************************************************+++++***++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************++==---:::::::::::::::::::::::::::::=+-::::::::::::::::::--==++**********************************************************************************************************************************************************************************++++++++++++++++++++++++++========++++++++++++++****************************************************************############################################################################################################################################******************************************************************************************************************************************************#########################%%%%%%%%%############*****+++==============+++++++====------------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################%%@@@@@%%####################################################%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++**************###%%%%%%#######*****#%%#****#%%#**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************########################*****************************##################*+================***********************************************************++++++**++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************+++=---:::::::::::::::::::::::::::::++-::::::::::::::::::--==++*********************************************************************************************************************************************************************************+++++++++++++++++++++++++++========+++++++++++++++***************************************************************############################################################################################################################################******************************************************************************************************************************************************#########################%%%%%%%%%############*****+++=============+++++++++===------------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################%%@@@@@@%####################################################%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++**************####%%%%%%######*****#%%#****#%%##*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************########################****************************##%#########******++================+***********************************************************++++++***+++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************+++=---:::::::::::::::::::::::::::::+*-::::::::::::::::::--==++********************************************************************************************************************************************************************************++++++++++++++++++++++++++++========++++++++++++++++***************************************************************###########################################################################################################################################******************************************************************************************************************************************************#########################%%%%%%%%%############*****+++============++++***+++===------------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@%%###################################################%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++**************####%%%%%%########***#%%#****#%%##*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************########################****************************##%#########*+++++==================+***********************************************************++++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************+++=---:::::::::::::::::::::::::::::+*=::::::::::::::::::--==++********************************************************************************************************************************************************************************++++++++++++++++++++++++++++========+++++++++++++++++***************************************************************##########################################################################################################################################******************************************************************************************************************************************************#########################%%%%%%%%%#############****+++===========+++******+++===-----------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@%####################################################%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++***************###%%%%%%%########**#%%%****#%%#####*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************#########################****************************#%########*++++++++================+***********************************************************++++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************+*#=---::::::::::::::::::::::::::::-**+::::::::::::::::::--==++*******************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=========++++++++++++++++***************************************************************##########################################################################################################################################******************************************************************************************************************************************************#########################%%%%%%%%%#############****+++==========+++********+++==-----------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@%####################################################%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++***************####%%%%%%%########*#%%%****#%%#####*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************####%%%%%%%%%%%##%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************##########################***************************#########*++++++===++=============++***********************************************************+++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*******************##+---::::::::::::::::::::::::::::-***-:::::::::::::::::--==++*******************************************************************************************************************************************************************************+++++++++++++++++++++++++++++==========+++++++++++++++****************************************************************#########################################################################################################################################******************************************************************************************************************************************************##########################%%%%%%%%#############****+++=========++++********+++===----------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@%###################################################%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++***************####%%%%%%%%#########%%%#####%%######******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************######******##%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************###########################**************************#########++++++=++================+************************************************************+++*****#*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*******************##+---::::::::::::::::::::::::::::-***-:::::::::::::::::--==++******************************************************************************************************************************************************************************++++++++++++++++++++++++++++++==========++++++++++++++++***************************************************************#########################################################################################################################################******************************************************************************************************************************************************##########################%%%%%%%%#############****+++========++++**********+++==----------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@%#####################################################%#########################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++*****************####%%%%%%%%########%%%#####%%######*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************#%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************###########################*************************########*++++++++=++===============+*******************************************************#*********####*##************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************###+---::::::::::::::::::::::::::::-***=:::::::::::::::::--==+++****************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========+++++++++++++++***************************************************************#########################################################################################################################################******************************************************************************************************************************************************##########################%%%%%%%%#############****+++========+++************++===---------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++*****************####%%%%%%%%%#######%%%#####%%%#####********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************#%%@%%@%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************##############################*********************###*****+++++++++++================++***************************************************#######*****###########*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************###*---::::::::::::::::::::::::::::-***+:::::::::::::::::---=+++*****************************************************************************************************************************************************************************++++++++++++++++++++++++++++++===========+++++++++++++++******************************************************************#####################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++=======++++************+++==----------==+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++******************####%%%%%%%%%######%%%####%%%%#####*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************#%%@%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************##############################********************###**+++++++++++++++================++***********************************************############**#############*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************###+---::::::::::::::::::::::::::::-***+-::::::::::::::::---=+++****************************************************************************************************************************************************************************++++++++++++++++++++++++++++++============+++++++++++++++******************************************************************#####################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++=======++++************+++===---------==+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************+++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++******************####%%%%%%%%%%#####%%%####%%%%#####**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************#%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************################################****************####*+++++++++++++++++================++********************************************#############################*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************###+---::::::::::::::::::::::::::::-****-::::::::::::::::---=+++****************************************************************************************************************************************************************************++++++++++++++++++++++++++++++=============++++++++++++++******************************************************************#####################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++=======+++**************++===---------==++**##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++*******************####%%%%%%%%%%%%##%%%####%@@%#####***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************#%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************##################################************####*++++++++++++++++++================++*******************************************##############################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****************####*--:::::::::::::::::::::::::::::-****=::::::::::::::::---=+++****************************************************************************************************************************************************************************++++++++++++++++++++++++++++++=============++++++++++++++*******************************************************##***********###################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++=======+++**************+++===--------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************+++++++++++++++++*******************+++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++*******************#####%%%%%%%%%%%%%%@%####%@@%####**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************+*#@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************###################################*#********###**+++++++++++++++++++================+*******************************************##############################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****************####*---::::::::::::::::::::::::::::=****+::::::::::::::::---=+++***************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++=============++++++++++++++*****************************************************######***********#################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++======++++***************++===--------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************++++++++++++++++********************+++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++********************#####%%%%%%%%%%%%%@%#%##%@@%####***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************#@@@@@@@@@@@@%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************###############################################**++++++++++++++++++++================+******************************************##############################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****************####*--:::::::::::::::::::::::::::::=*****-:::::::::::::::---=+++***************************************************************************************************************************************************************************++++++++++==+++++++++++++++++++==============+++++++++++++****************************************************########**********#################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++======++++***************++===--------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++*********************######%%%%%%%%%%%@%####%@%%###****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************#%@@@@@@@@@@@@%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************##############################################**+++++++++++++++++++++===============++******************************************##############################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####****************######+--::::::::::::::::::::::::::::=*****=::::::::::::::::--==++***************************************************************************************************************************************************************************+++++++++===+++++++++++++++++++==============+++++++++++++****************************************************########***********################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++======+++*****************++===-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++***************++++++++++**********************######%%%%%%%%%%@%####%@%%##******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************##%@@@@@@@@@@@@%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@%@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************############################################**+++++++++++++++++++++++===============++******************************************#############################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####**************%%######%%%#*=-::::::::::::::::::::::::=*+**+=::::::::::::::::--==++***************************************************************************************************************************************************************************+++++++++===+++++++++++++++++++===============+++++++++++++***************************************************########***********################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++======+++*****************++===-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************+**+********************************************************************************************************++++++++++***********************#######%%%%%%%%%%%###%%%%#********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************##%@@@@@@@@@@%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************##################################*#########**++++++++++++++++++++++++==============+++******************************************#############################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####**************########%%%%%%%%#+=-:::..:::.:..:....::-=+++*+::::::::::::::::--==++***************************************************************************************************************************************************************************++++++++====++++++++++++++++++================++++++++++++****************************************************##########**********###############################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++======+++*****************++===-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@@%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++*************************###########%%%%%####%%%##********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************###@@@@@@@@@@@%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************############################*###*#########***+++++++++++++++++++++++++==============+++*******************************************########################*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####****************#######%%%%%%%%%%##*=-:......:.......::--=++-:::::::::::::::--==++***************************************************************************************************************************************************************************++++++++====++++++++++++++++++================+++++++++++++***************************************************##########*********################################################################################################################################*******************************************************************************************************************************************************##########################%%%%%%%%#############****+++======+++*****************+++==-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++***************************###########%%#####%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************###@@@@@@@@@@@@%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++********************************##############################*########***+++++++++++++++++++++++++++++============++++*******************************************#######################*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####****************#####*==+##%%%%%##%%%##*=:.............::::--:::::::::::::::--==++**************************************************************************************************************************************************************************+++++++++====++++++++++++++++++=================++++++++++++****************************************************##########********################################################################################################################################*******************************************************************************************************************************************************##########################%%%%%%%%#############****+++======+++*****************+++==-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++****************************##########%%#####%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************####@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************###############################*######**++++++++++++++++++++++++++++++++============++++*********************************************###################********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####****************######-:::-=*#******####%#*=:.............::::::..::::::::::---=++**************************************************************************************************************************************************************************+++++++++====++++++++++++++++++==================+++++++++++*****************************************************#########******#################################################################################################################################********************************************************************************************************************************************************##########################%%%%%%%%#############****+++======+++******************++===------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@@@%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++******************************########%%#####%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************###%@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************#############################*######**+++++++++++++++++++++++++++++++++++===========++++***********************************************##############**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++######****************#####*=:....-+++++++**####%##*=:...................::::::::::--=++**************************************************************************************************************************************************************************++++++++=====+++++++++++++++++===================+++++++++++*****************************************************#########*****##################################################################################################################################*********************************************************************************************************************************************************#########################%%%%%%%%#############****+++======+++******************++===------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++***********************************####%##***#%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************####%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************##########################*#####%%#*++++++++++++++++++++++++++++++++++++++==========+++**************************************************##########*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######****************#####*+=:.:-++++++++++**########*=:...................:::::::--=++**************************************************************************************************************************************************************************++++++++=====+++++++++++++++++===================+++++++++++******************************************************#########**###################################################################################################################################***********************************************************************************************************************************************************########################%%%%%%%%#############****+++======+++******************++===------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################%@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++***************************************##*****%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************###############################%%%%%%*+++++++++++++++++++++++++++++++++++++++========++++****************************************************#######*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*************++*######+++--+++++++++++++**#########+-...................:::::--==++*************************************************************************************************************************************************************************++++++++=====++++++++++++++++=====================+++++++++++*****************************************************#############################################################################################################################################****************************************************************************************************************************************************************####################%%%%%%%%#############****+++======+++******************+++==------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################%@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++****************************************##*****%%%#*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************#####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++****************************##########################**##%%%%%%%%*+++++++++++++++++++++++++++++++++++++++========++++******************************************************####*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*************++*#####*+++++++++++++++++*********#####*=...................::::-==++*************************************************************************************************************************************************************************++++++++=====++++++++++++++++=====================+++++++++++*****************************************************#######################################################################%#####################################################################****************************************************************************************************************************************************************####################%%%%%%%%#############****+++======+++******************+++===-----==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################%@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************************************************************************************************************************************************************+**************************************************++++++++****************************************#******%%%%*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************###**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%%%%%%@%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**********+++++++++++++++++++++++++++++++++++++++++++++++++++++*********##****************#########################*###%%%%%%%#**++++++++++++++++++++++++++++++++++++++++========+++**#*****************************************************##***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######************+++*#####*++++++++++++++++***************#**=:................::::--=++************************************************************************************************************************************************************************+++++++++=====+++++++++++++++=======================++++++++++******************************************************#######################################################################%################################################################*#####****************************************************************************************************************************************************************##################%%%%%%%%#############****+++======+++*******************++===------==+***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################%@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++****************************************#******%%%%*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**********+++++++++++++++++++++++++++++++++++++++++++++++++++++********#####*********############################*###%%%%%%%#**+++++++++++++++++++++++++++++++++++++++++++=======+++**********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*+*++++++++++++*#####*+++++++++++++++*********************+:...............:::--=++************************************************************************************************************************************************************************+++++++++======++++++++++++++=======================++++++++++******************************************************#######################################################################%######################################################################****************************************************************************************************************************************************************##################%%%%%%%%#############****+++======+++*******************++===------==+***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################%@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++**********************************************#%%%%*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************###%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@%%@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############**********+++++++++++++++++++++++++++++++++++++++++++++++++++++********#####*****##################################%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++====++++********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*+*++++++++++++*##****++++++++++++++**********+*************+-..............::--==++************************************************************************************************************************************************************************+++++++=======++++++++++++==========================++++++++++*****************************************************#######################################################################%%#####################################################################****************************************************************************************************************************************************************##################%%%%%%%%#############****+++======+++*******************++===------==+***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################%@@@@@@@@@@@@@@%%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++**********************************************#%%%%*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************##%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++********#######**##################################%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++====++++****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++++++********++++++++++++++**********+=+*************+-............:::-==++************************************************************************************************************************************************************************+++++++=======+++++++++++===========================++++++++++****************************************************########################################################################%%#####################################################################*****************************************************************************************************************************************************************#################%%%%%%%%#############****+++======+++*******************++===------==+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@%%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************************************++++++***********************************************#%%%%**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************###%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@%@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############************+++++++++++++++++++++++++++++++++++++++++++++++++++*********#########################################%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++==+=+++************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####*++++++++++++++********+++++++++++++*************==**************+-...........::-==+++***********************************************************************************************************************************************************************+++++++=======+++++++++=============================++++++++++****************************************************########################################################################%%######################################################################******************************************************************************************************************************************************************###############%%%%%%%%#############*****+++=====+++*******************++===------==+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************************************++++++***********************************************#%%%%**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************###%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########************+++++++++++++++++++++++++++++++++++++++++++++++++++*********#######################################%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####*++++++++++++++********+++++++++++++**************=:=**************+-.........::--=+++************************************************************************************************************************************************************************++++++======+++++++++===============================++++++++++**************************************************#########################################################################%%%#####################################################################*******************************************************************************************************************************************************************##############%%%%%%%%#############*****+++=====++++******************++===------==+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++***********************************************#%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************#%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########************+++++++++++++++++++++++++++++++++++++++++++++++++++*********######################################%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####*++++++++++++++********+++++++++++++***************+::=**************+:.......::--==+++********************************************************************************************************************************************************************#***+++++======+++++++++================================+++++++++**************************************************##########################################################################%%#####################################################################********************************************************************************************************************************************************************#############%%%%%%%%#############*****+++======+++******************++===------==+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++***********************************************#%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************##%%%@@@@%@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@%@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########************+++++++++++++++++++++++++++++++++++++++++++++++++++********###########################%%%%%%####%%%%%#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++*********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####*++++++++++++++********+++++++++++++*****************-.:+**************=:......::-==++++****************************************************************************************************************************************************************######*+++++======++++++++=================================+++++++++**************************************************##########################################################################%%#####################################################################*************************************************************************************************************************************************************#******#############%%%%%%%%#############*****+++======+++******************++===------==+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************++++++*************************************************#%%%%*+********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************###%%%@@@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***********+++++++++++++++++++++++++++++++++++++++++++++++++++********###########################%%%%%%%%#%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####*++++++++++++++********+++++++++++++******************=..-+**************-.....::-==++++*************************************************************************************************************************************************************##########*++++======++++++++==================================++++++++************************************************############################################################################%%%#####################################################################*********************************************************************************************************************************************************************###########%%%%%%%%#############*****+++======+++******************++===------==+****#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************++++++*************************************************#%%%%*+********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************####@%%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***********+++++++++++++++++++++++++++++++++++++++++++++++++++********############################%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####*++++++++++++++********++++++++++++++******************+: :=**************+:...::-==+++++**********************************************************************************************************************************************************#############++++======++++++++==================================++++++++***********************************************#############################################################################%%%#####################################################################*********************************************************************************************************************************************************************###########%%%%%%%%#############*****+++======+++*****************+++===------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************++++++*************************************************#%%%%***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************###*%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############************++++++++++++++++++++++++++++++++++++++++++++++++++********############################%%%%%%%%%#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++++********++++++++++++++*******************+- .:+**************-:.::-==++++++*******************************************************************************************************************************************************###############++++======++++++++===================================+++++++***************************************#####################################################################################%%%#####################################################################*********************************************************************************************************************************************************************############%%%%%%%#############*****+++======++++****************+++==-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************++++**************************************************#%%%%***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************###**@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############************++++++++++++++++++++++++++++++++++++++++++++++++++********############################%%%%%%%##*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++++********+++++++++++++++********************=. .=+*************+:::--==++++++****************************************************************************************************************************************************################*++++=====++++++++++==================================+++++++**************************************######################################################################################%%%######################################################################********************************************************************************************************************************************************************############%%%%%%%#############*****+++======++++****************++===-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************************************++**************************************************#%%%%#**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+++++++++*******************************************************************##**#@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############************++++++++++++++++++++++++++++++++++++++++++++++++++********############################%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+++++++++++++*********+++++++++++++++*********************=: .:=*************+-:--==+++++++********++***************************************************************************************************************************************##################*+++======++++++++++==================================++++++++*************************************#######################################################################################%%%#####################################################################********************************************************************************************************************************************************************############%%%%%%%#############*****+++=======++++***************++===-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%#**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************++++++++++++++++++**********************************************************###**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############***********++++++++++++++++++++++++++++++++++++++++++++++++++********#############################%%#%%##*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+++++++++++++*********++++++++++++++++*********************+-. .-**************=--==+++++++++****++++++***********************************************************************************************************************************###################**+++++====++++++++++==================================++++++++*************************************#######################################################################################%%%######################################################################********************************************************************************************************************************************************************###########%%%%%%%############******+++========+++***************++===-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%#*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************+++++++++++++++++++++++++++++************************************************##***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############************+++++++++++++++++++++++++++++++++++++++++++++++++********################################%###++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+++++++++++++*********+++++++++++++++++**********************=. .:+*************+===++++++++++++++++++++*********************************************************************************************************************************######################*++++====++++++++++===================================+++++++**************************************###########################################################################%%%%%%%%%#%%%%#######################################################################*******************************************************************************************************************************************************************###########%%%%%%%############******+++========++++*************+++===-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************++**********************************************************#%%%%#*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************+++++++++++++++++++++++++++++++++********************************************#***#@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############************+++++++++++++++++++++++++++++++++++++++++++++++++*******####################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+++++++++++++*********++++++++++++++++++**********************=:. .=*************+==+++++++++++++++++++++*******************************************************************************************************************************########################*+=+====+++++++++++==================================+++++++***************************************########################################################################%%%%%%@@%@%%%%%%#######################################################################*******************************************************************************************************************************************************************###########%%%%%%%############******+++=========+++*************++===--------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+**#%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************++++++++++++++++++++++++++++++++++********************************************#****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############************+++++++++++++++++++++++++++++++++++++++++++++++********###################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++===========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+++++++++++++*********+++++++++++++++++++**********************+-. .-**************+=++++++++++++++++++++******************************************************************************************************************************##########################**+====+++++++++++==================================+++++++***************************************#######################################################################%%%%@@@@@@@@@@@@%%#####################################################################*********************************************************************************************************************************************************************##########%%%%%%%############******+++=========++++************++===--------===+***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+**#%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************++++++++++++++++++++++++++++++++++************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################************++++++++++++++++++++++++++++++++++++++++++++++********##################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#************+++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++**********++++++++++++++++++++***********************=. .:+*************++++++++++++++++++++++*********************************************************************************************************************************##########**###########**+=+=+++++++++++==================================++++++++**************************************######################################################################%%%%@@@@@@@@@@@@@@%#####################################################################*********************************************************************************************************************************************************************##########%%%%%%%############******+++==========++++**********+++==---------===+***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+**#%%%%#*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%##################*************++++++++++++++++++++++++++++++++++++++++++++*******#################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************##*********************++++++++++++++++++++++++++++++++++++*###**++++++++++++**********+++++++++++++++++++++***********************+:  .+*************++++++++++++++++++++++********************************************************************************************************************************#########*****###########*+=++++++++++++==================================++++++++**************************************#####################################################################%%%@@@@@@@@@@@@@@@@@%####################################################################**********************************************************************************************************************************************************************#########%%%%%%%############******+++===========+++**********++===---------===+***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************%%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************++++++++++++++++++++++++++++++++++++***********************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####################**************+++++++++++++++++++++++++++++++++++++++++++*******###############################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##**#************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************##*************************++++++++++++++++++++++++++++++++*###**++++++++++++**********++++++++++++++++++++++***********************+-. .+*************++++++++++++++++++++++*********************************************************************************************************************************####*********###########*+++++++++++++==================================++++++++**************************************####################################################################%%%@@@@@@@@@@@@@@@@@@%###################################################################***********************************************************************************************************************************************************************#########%%%%%%%############******+++============+++********+++==----------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************%%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************++++++++++++++++++++++++++++++++++++++********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%####################***************+++++++++++++++++++++++++++++++++++++++++******##############################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##*##****#*******************************************+***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================+++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************###*****************************++++++++++++++++++++++++++++*###**+++++++++++++*********++++++++++++++++++++++++***********************=. .=*************++++++++++++++++++++++**********************************************************************************************************************************************#########*#**+++++++++++==================================++++++++**************************************####################################################################%@@@@@@@@@@@@@@@@@@@@@%##################################################################************************************************************************************************************************************************************************########%%%%%%%############******+++=============+++*******++===----------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************%%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************++++++++++++++++++++++++++++++++++++++*******************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###################*****************++++++++++++++++++++++++++++++++++++++******############################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##*******#*************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================++++++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************###************************####***++++++++++++++++++++++++++*###**++++++++++++++++++++**+++++++++++++++++++++++++***********************+: .=*************+++++++++++++++++++++************************************************************************************************************************************************######*#****++++++++++===================================+++++++***************************************##################################################################%%@@@@@@@@@@@@@@@@@@@@@%%#################################################################************************************************************************************************************************************************************************########%%%%%%%############******+++==============+++*****+++==------------==+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************%%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************+++++++++++++++++++++++++++++++++++++++*******************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##################*****************+++++++++++++++++++++++++++++++++++++******##########################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#*******#****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************####**************************#####**++++++++++++++++++++++++*##***++++++++++++++++++++++++++++++++++++++++++++++++************************-..=************++++++++++++++++++++++************************************************************************************************************************************************######******+++++++++===================================+++++++****************************************#################################################################%@@@@@@@@@@@@@@@@@@@@@@@%%################################################################************************************************************************************************************************************************************************########%%%%%%%############******+++===============+++++++++===------------==+****################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************%%%%%#*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************++++++++++++++++++++++++++++++++++++++++*****************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##################****************++++++++++++++++++++++++++++++++++++******#########################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#*******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================++++++++++++++++++++++++*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************####************************#########*+++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++++++++++++++++++++************************=:.=************+++++++++++++++++++++*************************************************************************************************************************************************#####*******+++++++++==================================+++++++****************************************################################################################%%@@@@@@@@@@@@@@@@@@@@@@@%%%###############################################################************************************************************************************************************************************************************************########%%%%%%%############******++++===============+++++++====------------==+****#############################################################################################################################%%%################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%#********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************+++++++++++++++++++++++++++++++++++++++++++***************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%################******************+++++++++++++++++++++++++++++++******######################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*#**#*#*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================+++++++++++++++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************####**********************############**+++++++++++++++++++++*#***+++++++++++++++++++++++++++++++++++++++++++++++++++*************************-.+************++++++++++++++++++++**************************************************************************************************************************************************#####*******++++++++==================================++++++++*************************************#*****############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################************************************************************************************************************************************************************************########%%%%%%%############******++++=================++++====-------------==++***#########################################################################################################################%%%%%%%%%%##############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%#********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************+++++++++++++++++++++++++++++++++++++++++++**************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%##################**************************+**+++++++++++++++++******#####################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*#**#*#*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================+++++++++++++++++++++++++++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************#####*********************##############**++++*+++++++++++++++*#***+++++++++++++++++++++++++++++++++++++++++++++++++++**************************=:+************++++++++++++++++++++**************************************************************************************************************************************************#*#*********+++++++==================================++++++++*********************************************#########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################************************************************************************************************************************************************************************########%%%%%%%############******++++==========--============--------------==++***##########################################################################%%%%%%%%%####################################%%%%%%%%%%%%%#############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%%*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************++++++++++++++++++++++++++++++++++++++++++++*************************************@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%####################*************************************+++++******###################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#****#***********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++*************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================+++++++++++++++++++++++++++++++++++++****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************#####*******************#################*++++++++++++++++++++*#***+++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+-************++++++++=+++++++++++***********************************************************************************************************************************************+***************++++++==================================++++++++*********************************************#########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################************************************************************************************************************************************************************************########%%%%%%%############******++++=========-----==========--------------==++***######################################################################%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%%******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************++++++++++++++++++++++++++++++++++++++++++++************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%###########%%##############*******************************++******#################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*#****#*************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************#####******************###################*+++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************=************++++++===+++++++++++***********************************************************************************************************************************************++**************+++++==================================++++++++*********************************************########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################************************************************************************************************************************************************************************########%%%%%%%############******++++=========-------=======---------------==++***####################################################################%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%###########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%%******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************++++++++++++++++++++++++++++++++++++++++++++***********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*************************++*****################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*****##**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============----------==================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************#####****************#####################**+*++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+++++=====+++++++++++**********************************************************************************************************************************************++***************++++==================================++++++++*********************************************########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################************************************************************************************************************************************************************************########%%%%%%%############******++++=========--------=====----------------==++***#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%##########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%%******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++**********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################**************+++**################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*****###***************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++**************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============---::::::::::-----============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************######***************#######################*+*++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************++++======+++++++++++********************************************************************************************************************************************+++++*************++++==================================++++++++**********************************************#######################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################*##########################################************************************************************************************************************************************************************************########%%%%%%%############*******+++=========----------=------------------==++***################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%%%%%%%%%%%%%%%%##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%%******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++*********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%###########################***********################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###*****************************************************************************++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++******************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============-::::::::::....::::-============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************######*************#########################*++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************++++=======++++++++++********************************************************************************************************************************************+++++**************+++==================================++++++++***********************************************#####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################***#########################################************************************************************************************************************************************************************************#########%%%%%%############*******+++=========-----------------------------==++***###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%%******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++*********************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%#############################******#########**#####**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##*###*********************************************++********************************++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++*************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========-::...............::-============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************######************##########################**+*+++++++++++++++*****++++++++++++++++++++*+++++++++++++++++++++++++++++++*+++***************************************++========++++++++++*******************************************************************************************************************************************+++++++**************++==================================++++++++***********************************************#####################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################****########################################************************************************************************************************************************************************************************#########%%%%%%############*******+++========------------------------------==++***##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************************************************************************************************************************************************************************************************************************************+++**********************************************************#%%%%%%*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++**********+*+*************+****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%#########################################***+**#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#**#*##*******************************************+++++++++++++*************************+++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========--:::::::..........:-============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************####%##********#############################**+***+++++++++++++*****++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++***********************************++=========++***+++*+******************************************************************************************************************************************++++++++**************+===================================+++++++************************************************###################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############***#**###################################*###*************************************************************************************************************************************************************************#########%%%%%%############*******+++========------------------------------==++***############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************************************************************************************************************************************************************************************************************************************+++**********************************************************#%%%%%%****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++**************+***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%########################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#**#*###*****************************************++++++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============---:::::::::......:-============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************####%##*******###############################***+++*+++++++++++*****++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++***********************************+=========+**###**+++*****************************************************************************************************************************************+++++++++**************===================================+++++++************************************************###################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############***#**#######################################*************************************************************************************************************************************************************************#########%%%%%%############*******+++========------------------------------==++***############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************************************************************************************************************************************************************************************************************************************+++**********************************************************#%%%%%%***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++***********+*+*******###%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#####################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#**#####****************************************+++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+*****************************+++++++++++++++++++++++******************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============--------:::::::::-============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++*****************************************************************************###%%%%##***###################################****+++++++++++++*****++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++*************************************++=======+**####*****************************************************************************************************************************************++++++++++++**************+==================================+++++++********************************************#**####################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##############******#######################################**************************************************************************************************************************************************************************########%%%%%%############*******+++=======-------------------------------==++***###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************++++++********************************************************************************************************+++**********************************************************#%%%%%%**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************++++++++++++++++++++++++++++++++++++++++++++++++***************#%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%###################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#**#*#####**************************************++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++**+++++*********************************+++++++++++++++++++*******************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================-----------=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************###%%%%###########################################***+++++++++++*****+++++++++++++++++++**++++++++++++++++++++++++++++++++++++********************************************+=====+=+*#####**************************************************************************************************************************************++++++++++++++**************+=================================+++++++********************************************#**###################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############*******#####################################***************************************************************************************************************************************************************************########%%%%%%############*******+++=======-------------------------------==++****#########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************+++++++++++*****************************************************************************************************+++**********************************************************#%%%%%%**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++**********#%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#*######************************************++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++***+++****************************************+++++++++++***********************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++=========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************###%%%%%############################################**++++++++++*****+++++++++++++++++++**++++++++++++++++++++++++++++++*+++*******+*****************************************++==+++*######*********************************************************************************************************************************++++++++++++++++++**************=================================+++++++********************************************#*####################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############*******#####################################***************************************************************************************************************************************************************************########%%%%%%############*******+++======--------------------------------===+****########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************++++++++++++****************************************************************************************************+************************************************************#%%%%%%**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++*********%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#################################*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##*########**********************************++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++******+*********************************************++++****************************************************************************************************************************************************************************************************++++++++++++++++++++++++++========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++****************************************************************###%%%%%%##############################################*+++++++++*****+++++++++++++++++++**++++++++++++++++++++++++++++++********************************************************+++++**#####***************************************************************************************************************************+++++++++++++++++++++++**************+================================+++++++********************************************######################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############*******####################################****************************************************************************************************************************************************************************########%%%%%############********++++=====---------------------------------==+****########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************++++++++++++*****************************************************************************************************************************************************************#%%%%%%**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++*********%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%###############################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###########**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++***********************************************************#**#####%%%%%%###############################################*++++++++*****+++++++++++++++++++**++++++++++++++++++++++++++++++***********************************************************+++*#######*****************************************************************************************************************+++++++++++++++++++==+++++++++++**************+===============================+++++++*********************************************####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############**********#################################****************************************************************************************************************************************************************************########%%%%%############********++++=====---------------------------------==+****#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************+++++++++++++****************************************************************************************************************************************************************#%%%%%%**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++**++**++*%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%##########################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++*************************++++++++********************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++*********************************************************##*########%%%%%%%##############################################**+++++++*#***+++++++++++++++++++**++++++++++++++++++++++++++++++*************************************************************++*#######*************************************************************************************************************++++++++++++++++++++++==++++++++++++**************===============================+++++++*********************************************####################################################%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############**********#################################****************************************************************************************************************************************************************************########%%%%%############********++++====----------------------------------==+****######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************+++++++++++++++***************************************************************************************************************************************************************%%%%%%%**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*******%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*###########***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++***********************++++++++*********************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++===================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************#################%%%%%%%###############################################*+++++++*****+++++++++++++++++++**+++++++++++++++++++++++++++++++**********************************************************###***#######*****************************************************************************************************+++++++++++++++++++++++++++++===++++++++++++*************+==============================+++++++**********************************************##################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############***********################################****************************************************************************************************************************************************************************########%%%%%############*******+++++====----------------------------------==+****######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************+++++++++++++++++***************************************************************************#*********************************************************************************%%%%%%%**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*******%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#**###########**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++**********************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++==================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************#################################%%%%%%%################################################*++++++*#***+++++++++++++++++++**+++++++++++++++++++++++++++++++***********************************************************####*########**************************************************************************************************++++++++++++++++++++++++++++++++===+++++++++++**************+=============================+++++++**********************************************##################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############***********################################****************************************************************************************************************************************************************************########%%%%%############*******+++++====----------------------------------==+****######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************+++++++++++++++++++*************************************************************************#*********************************************************************************%%%%%%%**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++******#%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++*************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++===============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############******###################################################%%%%%%%################################################**+++++*##**+++++++++++++++++++**++++++++++++++++++++++++++++++++***********************************************************#############********************************************************************************************+++++++++++++++++++++++++++++++++++++===++++++++++++************#*=============================+++++++*********************************************###################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############************##############################*****************************************************************************************************************************************************************************########%%%%%############*******+++++====----------------------------------==+****#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************+++++++++++++++++++++**********************************************************************##*********************************************************************************%%%%%%%*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++******#%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+***************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++======-----=================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###*#####################################################################%%%%%%%%################################################**++++*##**+++++++++++++++++++**++++++++++++++++++++++++++++++++************************************************************#############****************************************************************************************+++++++++++++++++++++++++++++++++++++++++===+++++++++++**************+===========================++++++++*********************************************###################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############************#############################******************************************************************************************************************************************************************************########%%%%%############*******+++++====----------------------------------==+****#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************++++++++++++++++++++++++*****************************************************************####*********************************************************************************%%%%%%%*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************##*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++*****%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#######***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############*****#############***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************+****************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++====-::::--=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############################################################################%%%%%%%%#################################################**+++*###*+++++++++++++++++++**++++++++++++++++++++++++++++++++************************************************************###############**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++===+++++++++++***************===========================++++++++******************************************######################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############*************############################******************************************************************************************************************************************************************************#########%%%%############*******+++++====----------------------------------==+****####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++**************************************************************####********************************************************************************#%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++*****%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%##########***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+*****************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++==::::::-==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################################################################%%%%%%%%##################################################*****###*+++++++++++++++++++**++++++++++++++++++++++++++++++++************************************************************################*****************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++===++++++++++***************+==========================++++++++****************************************#######################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############************############################*******************************************************************************************************************************************************************************########%%%%############*******+++++===-----------------------------------==+****####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++*************************************************************####********************************************************************************#%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#######################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++*****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++*****%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%################****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+******************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++==::::---=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###############################################################################%%%%%%%%####################################################**####*+++++++++++++++++++**++++++++++++++++++++++++++++++++*************************************************************################**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++===++++++++++****************==========================++++++++**************************************#########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*************###########################*******************************************************************************************************************************************************************************########%%%%############*******+++++===-----------------------------------==+****###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++*************************************************************####********************************************************************************#%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%##%#####**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#%%%%%%%%%%%@@@@@@%@%@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%#######################*****##########***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**################################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++==----======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################%%%%%%%%##########################################################*+++++++++++++++++++**+++++++++++++++++++++++++++++++++************************************************************#################*************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++****************+=========================++++++++*************************************##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*************###########################*******************************************************************************************************************************************************************************########%%%%############*******+++++===-----------------------------------==+****###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************++++++++++++++++++++++++++***************************************************************##********************************************************************************#%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++****%%%%%%%%%%#@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%#########################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###################################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++=--=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************+++++++++++++++++++++++++++++++++++++++++++++**###################################################################################%%%%%%%%##########################################################*++++++++++++++++++***++++++++++++++++++++++++++++++++++************************************************************#################*********************************************************************+++++++++++++++++++++++++++===++++++++++++++++++++++++++===+++++++++*****************=========================++++++++************************************#**########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############**************########################*********************************************************************************************************************************************************************************#######%%%%%############*******+++++===-----------------------------------==+****###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************++++++++++++++++++++++++++**************************************************************##********************************************************************************#%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%####**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*****%%%%%%##**#@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%##########################################**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****####################################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++=---====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************++++++++++++++++++++++++++++++++++++++**#####################################################################################%%%%%%%%##########################################################*++++++++++++++++++***+++++++++++++++++++++++++++++++++*************************************************************##################******************************************************************++++++++++++++++++++++++++======+++++++++++++++++++++++++++==+++++++++*****************+========================++++++++************************************#***######################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############**************########################*********************************************************************************************************************************************************************************########%%%%############*******+++++===-----------------------------------==++***###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************++++++++++++++++++++++++++**************************************************************##********************************************************************************#%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++******%%##******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%########################################**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#######################################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************##############**********************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++=----=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++**######################################################################################%%%%%%%%%#########################################################*++++++++++++++++++***+++++++++++++++++++++++++++++++++*************************************************************###################**************************************************************+++++++++++++++++++++++++++========+++++++++++++++++++++++++++==++++++++++*****************========================++++++++****************************************######################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############**************#######################**********************************************************************************************************************************************************************************########%%%%############*******+++++===-----------------------------------==++***###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++***********************************************************************************************************************************************#%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%###*++++++++++++++++++++++++++++++++++++++++++++++==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*******#********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%###################################*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******####################################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#################********************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++=---=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************++++++++++++++++++++++++++++++*########################################################################################%%%%%%%%%####################################################*####*+++++++++++++++++****++++++++++++++++++++++++++++++++++************************************************************####################***+*****************************************************+++++++++++++++++++++++++++++++=========+++++++++++++++++++++++++++==+++++++++*****************+=======================++++++++*****************************************#####################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############***************######################**********************************************************************************************************************************************************************************########%%%#############*******+++++===-----------------------------------==++***###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************++++++++++++++++++++++++++***********************************************************************************************************************************************#%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%##*++++++++++++++++++++++++++++++++++++====================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++**********+*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****######################################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************###################******************************************************************************************************************************************************************************************************************************************************************++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++++++++++++++++++++++++++++*#########################################################################################%%%%%%%%%###################################################**####*+++++++++++++++++***+++++++++++++++++++++++++++++++++++*************************************************************#####################*++++************************************************++++++++++++++++++++++++++++++++++++======+++++++++++++++++++++++++++==+++++++++******************=======================++++++++*****************************************#####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############***************###################************************************************************************************************************************************************************************************########%%%#############*******+++++====----------------------------------==++***##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++**********************************************************************************************************************************************#%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%###*+++++++++++++++++++++++++++++++========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++*****************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#########################################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************####################*************************************************************************************************************************************************************##########******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************+++++++++++++++++++++++**##########################################################################################%%%%%%%%%###################################################*+####*+++++++++++++++++***++++++++++++++++++++++++++++++++++++*************************************************************####################**++++++++++++***********************************++++++++++++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++=+++++++++******************+======================++++++++******************************************####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############***************###################************************************************************************************************************************************************************************************#########%%#############*******+++++=====---------------------------------==++***##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++**********************************************************************************************************************************************#%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##*+++++=+++++++++++++++++++++++=======================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++*****************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########################################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************######################*****************************************************************************************************************************************************#######%%%%%%%####***************************************************************************************++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************+++++++++++++++++++++**###########################################################################################%%%%%%%%%##################################################**+####*+++++++++++++++++***+++++++++++++++++++++++++++++++++++++*************************************************************####################**++++++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++******************+======================++++++++******************************************###################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############****************#################*************************************************************************************************************************************************************************************#########%%#############*******++++++=======------------------------------==++***##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++**********************************************************************************************************************************************#%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%##*+=++++=++++++++++++++++++++++++=====================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++*************+**#@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************######################************************************************************************************************************************************************#####%%%%%%%%%%%%##%%%###*************************************************************************************++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************+++++++++++++++++++**############################################################################################%%%%%%%%%##################################################*++*###*+++++++++++++++++***+++++++++++++++++++++++++++++++++++++*************************************************************####################**+++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************======================++++++++*******************************************##################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############****************#################*************************************************************************************************************************************************************************************#########%%############********+++++++=========---------------------------==++****#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++********************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#*+++++++++++++++++++++++++++++++===================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++******************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###########################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************######################********************************************************************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%##**************************************************************************************++++++++++++++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++***********************************************************************************+++++++++**++++++++*#############################################################################################%%%%%%%%%#################################################**++*####+++++++++++++++++***+++++++++++++++++++++++++++++++++++++*************************************************************####################**+++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+=====================++++++++*********************************************################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*****************##############***************************************************************************************************************************************************************************************#######################*********+++++++==========--------------------------=++****#######################################*########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################%@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++********************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#+++++++++++++++++++++++++++++++==================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++**********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++******************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++***############################################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************######################****************************************************************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##************************************************************************************+++++++++++++++++++++++++++++++++++++**********************************++++++++++++++++++++++++++++++++++**************************************************************************************++++++++++++++++++*##############################################################################################%%%%%%%%%#################################################**++#####+++++++++++++++++***+++++++++++++++++++++++++++++++++++++***************************************************************##################**+++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+=====================++++++++*********************************************################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*****************##############***************************************************************************************************************************************************************************************########%##############**********+++++++++++=======------------------------=++*****###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################%@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++********************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#++++++++++++++++++++++++++++++=================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++******************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*****################*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++***#############################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************######################************************************************************************************************************************************###%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%##%##************************************************************************************++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++*********************************************************************************************+++*++++++++*###############################################################################################%%%%%%%%%################################################**+++#####+++++++++++++++++***++++++++++++++++++++++++++++++++++++++****************************************************************#############*****++++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************=====================++++++++***********************************************##############################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############******************#############****************************************************************************************************************************************************************************************#######%##############************+++++++++++++=====----------------------=++**********##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################%@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++****************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#*+++++++++++++++++++++++++++++================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++******************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**********############********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************#############################################****************++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++*****************####################**********************************************************************************************************************************###%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%##***********************************************************************************+++++++++++++++++++++++++++++++*************************************************+++++++++++++++****************************************************************************************************+++++++*++*################################################################################################%%%%%%%%%################################################*++++#####+++++++++++++++++***++++++++++++++++++++++++++++++++++++++**********************************************************************************+++++++++++++++*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+====================++++++++***********************************************##############################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############******************#############****************************************************************************************************************************************************************************************#######%#############*********************+++++++=====--------------------=++**************################**********############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################%@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++***************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#++++++++++++++++++++++++++++++==============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++*****************************+++++*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++*******************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************##############################################****************++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++******************##################**#****************************************+++++++++++++***********************************************************************####%%%##%%%%##%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%##**********************************************************************************+++++++++++++++++++++++++++++**********************************************************************************************************************************************************************+++*++++**################################################################################################%%%%%%%%%###############################################**+++*#####+++++++++++++++++***+++++++++++++++++++++++++++++++++++++++*********************************************************************************+++++++++++++*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+====================++++++++***********************************************##############################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*******************############****************************************************************************************************************************************************************************************#######%#############*************************++++======------------------=++****************###########**************###########%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################%@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++**************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#+++++++++++++++++++++++++++=++=============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++*********************************************************************++++++++++++++++++++++++++++++++++++++++++++*******************+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************#***********###############################################****************++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++******************#################**************************************+++++++++++++++++++++++***************************************************************####%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%##*********************************************************************************++++++++++++++++++++++++++***********************************************************************************************************************************************************************++*++*++**#################################################################################################%%%%%%%%%###############################################*++++*#####++++++++++++++++****++++++++++++++++++++++++++++++++++++++++********************************************************************************+++=====++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************====================++++++++***********************************************#############################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########*******************############****************************************************************************************************************************************************************************************#####################***************************+++=======----------------==+******************************************##########%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################%@@@@@@@@@@@@@@@@@@@@%%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************##########********************************************************+++++++++++++++++++++++++++++***************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*++++++++++++++++++++++++++=+++============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++**********************************************************************++++++++++++++++++++++++++++++++++++++++++******************+***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*****#***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************#**********###############################################******************+++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++*******************################***********************************++++++++++++++++++++++++++++++********************************************************###%#####%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%#*********************************************************************************+++++++++++++++++++++++*************************************************************************************************************************************************************************++*++*+**##################################################################################################%%%%%%%%%##############################################**+++++#####++++++++++++++++****++++===+++++++++++++++++++++++++++++++++********************************************************************************++=====+++***++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************====================++++++++**************************************************##########################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########*******************###########*****************************************************************************************************************************************************************************************#####################****************************++++======---------------==+*******************************************#########%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%@@@@@@@@@@@@@@@@@@@%%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************###############*****************************************************+++++++++++++++++++++++++++++***************************************************************************************************************************************%%%%%%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#++++++++++++++++++++++++++=+++===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++**********************************************************************+++++++++++++++++++++++++++++++++++++++++*********************+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************##**********###############################################******************++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++********************##############*******************************+++++++++++++++++++++++++++++++++++++***************************************************########%%###%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%##*******************************************************************************++++++++++++++++++++++*************************************************************************************************************************************************************************+++++*++*###################################################################################################%%%%%%%%%##############################################*++++++#####++++++++++++++++***+++++=-=++++++++++++++++++++++++++++++++++*******************************************************************************+=====++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+===================++++++++****************************************************########################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########********************##########*****************************************************************************************************************************************************************************************#####################*****************************++++=====---------------==++*********************************#********#########%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################%@@@@@@@@@@@@@@@@@@@%%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************##################*****************************************************++++++++++++++++++++++++++++***************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*+++++++++++++++++++++++++++++++========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************++++++++++++++++++++++++++++++++++++++++***********************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************#**********################################################******************++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++**********************#########******************************+++++++++++++++++++++++++++++++++++++++++++++*******************************************################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*******************************************************************************+++++++++++++++++++***********************************************************************************************************************************************************************++**++*+*++*####################################################################################################%%%%%%%%###############################################**+++++####*++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++******************************************************************************=====+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+===================++++++++********************************************************####################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############*******************########*******************************************************************************************************************************************************************************************#####################******************************++++=====---------:----==++*******************************************########%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************###################****************************************************++++++++++++++++++++++++++++***************************************************************************************************************************************%%%%%%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#++++++++++++++++++++++++++++++++=======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************++++++++++++++++++++++++++++++++++++++++**********************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**############******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************##*********########################################################***********++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++************************#####******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##********************************************************************************+++++++++++++++*****************************************************************************************************************************************************************************+++++**#####################################################################################################%%%%%%%%##############################################**++++++####*++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++*****************************************************************************+===+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+===================++++++++********************************************************####################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*******************########*******************************************************************************************************************************************************************************************#####################*******************************++++====--------::----==++********************************************#######%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************************************************######################***************************************************+++++++++++++++++++++++++++++**************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*=+++++++++++++++++++++++++++++++======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************+++++++++++++++++++++++++++++++++++++++*********************+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****##############******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************####**************##*********###########################################################*********++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++*********************************************************++++++++++++++++++++++++++++++++++++++++++++++++*************************************######%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************************++++++*******************************************************************************************************************************************************************************+++**++**######################################################################################################%%%%%%%%#############################################**+++++++*###*+++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++***************************************************************************+==+**++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************===================++++++++*********************************************************###################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*******************########*******************************************************************************************************************************************************************************************######################********************************+++===--------::----==++********************************************######%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################%%@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************************************************########################*************************************************+++++++++++++++++++++++++++++*************************************************************************************************************************************#%%%%%%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%#++++++++++++++++++++++++++++++++======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************+++++++++++++++++++++++++++++++++++++++*********************+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####********########################************************************+***+++++++++++++++++++++++++++++++++++++++++**********************************##############*************##*********###########################################################*********++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++*********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++************######**********#######%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************************************************************************************************************************************************************************************+++*+++**########################################################################################################%%%%%%%#############################################*++++++++*###*+++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++**************************************************************************+++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************===================++++++++*********************************************************###################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*******************#######********************************************************************************************************************************************************************************************######################********************************++++==--------::----==++********************************************######%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################%@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************************************************#########################************************************************++++++++++++++++++++++++++++++************************************************************************************************************************************#%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********##*####*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++++++++++++++++++++++++++++++++======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************++++++++++++++++++++++++++++++++++++++*************+*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################*****************************+++++++******+++***********************************************######################************###********############################################################**********+++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++*******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++*********##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************************************************************************************************************************************************************************************+++++**+++*##########################################################################################################%%%%%%%#############################################*++++++++*###*+++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************++*****++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************===================++++++++**********************************************************##################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*******************#######********************************************************************************************************************************************************************************************######################*********************************+++===-------::----==++********************************************######%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################%@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************##########################************************************************+++++++++++++++++++++++++++++++*****************************************************************************************************************########**********#%%%%%%%%%*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++********############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%*+=+++++++++++++++++++++++++++++======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++****************************************************************************************************************++++++++++++++++++++++++++++++++++++++++***********+++++****+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################**************************************************************************************#########################**********#####*******#############################################################**********+++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++******************************************************++++++++++++++++++++++++++++++++++++++++++++++*************#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************************************************************************************************************************************************************************************+++++*+++*###########################################################################################################%%%%%%%############################################*+++++++++*###*+++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************==================++++++++************************************************************#################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############********************######*********************************************************************************************************************************************************************************************#####################**********************************++===-------::----==++********************************************#######%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************#*****############################***********************************************+++++++++++++++++++++++++++++++***************************************************************************************************************###########*********#%%%%%%%%%*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#+++++++++++++++++++++++++++++++======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++*****************************************************************************************************************++++++++++++++++++++++++++++++++++++++++*******+++++++++*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################***********************************************************************************############################*******#######******##############################################################**********++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++******************************************************++++++++++++++++++++++++++++++++++++**********************#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************************************************************************************************************************************************************************++++++++++**############################################################################################################%%%%%%############################################**+++++++++*###*++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************==================++++++++**************************************************************###############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############******************######*********************************************************************************************************************************************************************************************######################*********************************+++==-------::----==++********************************************#######%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################%@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************#*****############################***********************************************+++++++++++++++++++++++++++++++**************************************************************************************************************#############********#%%%%%%%%%*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++******************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++*****+++++++++++****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%#########################################################******************************************************************************#################################******########*****###############################################################***********+++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************+++++++++++++++++++++++++*********************************###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*********************************************************************************************************************************************************************************************************************************************************+++++++++++**#############################################################################################################%%%%%%############################################*+*++++++++*###*++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************==================++++++++**************************************************************###############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############*****************######*********************************************************************************************************************************************************************************************######################*********************************+++==-------::----==++********************************************#######%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################%@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************#############################*******************************************++++++++++++++++++++++++++++++++++++***********************************************************************************************************###############******#%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++++++*******################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%*+=++++++++++++++++++++++++++++====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++*+***++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################************************************************************************######################################*****#########****#################################################################**********+++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************++++++++++++++++*******************************************###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************************************************************************************************************************************************************************************************+++++*++*++*###############################################################################################################%%%%%%###########################################***+++++++++*###*++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************=================+++++++++***************************************************************#############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%%########*##***************######**********************************************************************************************************************************************************************************************#####################***********************************++==-----:::::---==++*********************************************######%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################%@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************##############################*******************************************++++++++++++++++++++++++++++++++++++**********************************************************************************************************################******%%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++++++******#################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#++++++++++++++++++++++++++++++====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++**++**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*********************************************************************########################################****##########****##################################################################**********++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************++++++++++++*********************************************#########*#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************************************************************************************************************************************************************************++**++*++**################################################################################################################%%%%%%###########################################*+++++++++++*###*++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************=================+++++++++***************************************************************#############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%@%########******************#####***********************************************************************************************************************************************************************************************#####################***********************************++==-----:::::---==++*********************************************######%%%#########*########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################%%@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************###############################*******************************************++++++++++++++++++++++++++++++++++++*********************************************************************************************************##################*****%%%%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++++++******##################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++***+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################****************************************************************#############################################***###########***####################################################################**********+++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************+++++++***************************************************##*######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************************************************************************************************************************************************************************++*++*+++**################################################################################################################%%%%%%%##########################################**+++++++++++*###*+++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************=================+++++++++**************************************************************##############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@#########****************######***********************************************************************************************************************************************************************************************#####################***********************************++===----:::::---==++*********************************************######%%%########***########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################%@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************#####################################******************************************+++++++++++++++++++++++++++++++++++++**+++++++++++++*****************************************************************************************##################****#%%%%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++++++******##################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++*++****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################************************************************************###############################################################***#####################################################################*********++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************#**##*####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************************************************************************************************************************************************************************++*++*++*##################################################################################################################%%%%%%%##########################################*++++++++++++*##**+++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************================++++++++++*************************************************************###############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########**************#######***********************************************************************************************************************************************************************************************#####################***********************************+++==----:::::---==++*********************************************######%%%########****########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################%%@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************################################################******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+**************************************************************###################****#%%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++++******###################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%*++++++++++++++++++++++++++++=========+===========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++**+***#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*****************************************************################################################################################################################################################*******++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************##*###%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************************************************************************************************************************************************************************+++*++**###################################################################################################################%%%%%%##########################################**++++++++++++*****+++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************================++++++++++************************************************************################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########************#######************************************************************************************************************************************************************************************************####################************************************+++==----:::::----=++*********************************************######%%%#######*****########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################%@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************#################################################******************************************+++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++************++++++*************************************************************####################***#%%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++++*****####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#++++++++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++*******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################***********************************************########################################################################################################################################################*****++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************##%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************************************************************************************************************************************************************+++++**####################################################################################################################%%%%%%##########################################*+++++++++++++*****+++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************================++++++++++************************************************************################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###########**********########************************************************************************************************************************************************************************************************####################*************************************++===----::::----=++********************************************#######%%########******########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################%@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************###################################################******************************************++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************####################***#%%%@%%%%%%#***********++++++++++++++++++++++++++++++++++++++++++++++++++++******####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++++++++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*****************************************##############################################################################################################################################################*****++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************#*##%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************************************************************************************************************************************************************+++*+**#####################################################################################################################%%%%%%#########################################**+++++++++++++*****++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************================++++++++++***********************************************************#################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########********########*************************************************************************************************************************************************************************************************###################**************************************++===----::::----==+********************************************#######%%########*******########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################%%@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************************######################################################*****************************************+++++************************+++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************####################***#%%%@%%%%%%#***********++++++++++++++++++++++++++++++++++++++++++++++++++++******####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#+++++++++++++++++++++++++++======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++*********@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################***********************************####################################################################################################################################################################*****+++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************#%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************************************************************************************************************************************************++++++*****++++**######################################################################################################################%%%%%%#########################################*++++++++++++++*****++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+================++++++++++***********************************************************#################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################**************************************************************************************************************************************************************************************************###################**************************************+++==----:::::---==++*******************************************#######%%#######********#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################%@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************************######################################################**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++*************************************************************#####################**#%%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++******#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*+++++++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++****************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################*******************************########################################################################################################################################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************#%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************************************************************************************************************************************************++++++**++***+*#########################################################################################################################%%%%#########################################*+++++++++++++++*****++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+===============+++++++++++************************************************************################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##########################**************************************************************************************************************************************************************************************************##################****************************************++==-----::::---==+********************************************########%#######*********########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################%@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************************######################################################**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++************************************************************#####################**#%%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++******#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*+++++++++++++++++++++++++++====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################*************************##############################################################################################################################################################################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************************************************************************************************************************************************++++++*+**++**#########################################################################################################################%%%%%#########################################*+++++++++++++++*****+++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************================+++++++++++************************************************************################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################***************************************************************************************************************************************************************************************************##################****************************************++===----::::---==++*******************************************################**********########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################%%@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************************######################################################**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++************************************************************#####################**#%%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++******#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*+++++++++++++++++++++++++++===================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################******************####################################################################################################################################################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************************************************************************************************************************************************+++++++**+**##########################################################################################################################%%%%%########################################**+++++++++++++++*****+++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+================+++++++++++************************************************************################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################*****************************************************************************************************************************************************************************************************#################****************************************+++==----::::---==++*******************************************################**********########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################%@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************####################################################*****************************************************************************++++++++++++++++++++++++++++++++++++++++++++************************************************************#####################**#%%%%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++******######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*+++++++++++++++++++++++++++==============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++***********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################******###############################################################################################################################################################################################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**************************************************************************************************************************************************************************************************************************************++++++*++**###########################################################################################################################%%%%%########################################*++++++++++++++++*****+++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+=================+++++++++++************************************************************################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################********************************************************************************************************************************************************************************************************################******************************************++===---::::---==++*******************************************################***********########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################%@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************##**#####################################################******************************************************************************++++++++++++++++++++++++++++++++++++++++++***********************************************************######################**#%%%%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++*****#######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%*+++++++++++++++++++++++++++============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################*******************************+++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************************************************************************************************************************************************+++++*++**############################################################################################################################%%%%########################################**++++++++++++++++*****++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+==================++++++++++***************************************************************##############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################************************************************************************************************************************************************************************************************************################******************************************++===----:::---==++*******************************************################************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################%@@@@@@@@@@@@%#####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************#########################################################*********************************************************************************++++++++++++++++++++++++++++++++++*++++***********************************************************######################*##%%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++******#######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%*+++++++++++++++++++++++++++=========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++*************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################******************************+++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*************************************************************************************************************************************************************************************************************************************+++++++**#############################################################################################################################%%%%########################################*+++++++++++++++++*****++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+===================++++++++++***************************************************************##############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##############**************************************************************************************************************************************************************************************************************################******************************************+++==-----::---==++*******************************************###############*************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################%@@@@@@@@@@@%%#####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************##########################################################*********************************************************************************************************************++************************************************************######################*##%%%@%%%%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++******#######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%*+++++++++++++++++++++++++++========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################******************************+++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************************************************************************************************************************************************+++++**##############################################################################################################################%%%%#######################################**+++++++++++++++++*****+++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++====================++++++++++***************************************************************##############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############***************************************************************************************************************************************************************************************************************################*******************************************++===-----:---==++*******************************************###############**************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################%%@@@@@@@@@@%%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************##########################################################**********************************************************************************************************************+************************************************************######################*##%%%@%%%%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++*****########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*+++++++++++++++++++++++++++=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++***************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################******************************+++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************************************************************************************************************************************************+++***###############################################################################################################################%%%%#######################################*++++++++++++++++++*****+++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************======================++++++++++***************************************************************##############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########******************************************************************************************************************************************************************************************************************################*******************************************+++==-----:---==++*******************************************##############***************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################%@@@@@@@@@@%%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************************##########################################################************************************************************************************************************************************************************************************########################%%%@%%%@%%%#*************++++++++++++++++++++++++++++++++++++++++++++++******########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++==================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************+++++++++++++++++++++++++++++++++++*****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################################################******************************+++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************++++***#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*********************************************************************************************************************************************************************************************************************************+***+****################################################################################################################################%%%#######################################*+++++++++++++++++++*****+++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+======================+++++++++++****************************************************************############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######*********************************************************************************************************************************************************************************************************************###############*********************************************++===--------==++********************************************#############****************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################%%@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************############################################################************************************************************************************************************************************************************************************########################%%%@%%%@%%%#*************++++++++++++++++++++++++++++++++++++++++++++++*****#########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++==================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************++++++++++++++++++++++++++++++++++******************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************++*+*#*####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************************************************************************************************************************************************************+**++**#################################################################################################################################%%%#######################################*+++++++++++++++++++*****++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+======================+++++++++++****************************************************************############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####*#*********************************************************************************************************************************************************************************************************************###############*********************************************+++==--------==++********************************************#############****************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################%%@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************###############################################################**********************************************************************************************************************************************************************************#########################%%%@@@%@%%%#*************++++++++++++++++++++++++++++++++++++++++++++++*****#########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*++++++++++++++++++++++++++++=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************+++++++++++++++++++++++++++++++++******************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################*****************************++++++++++++++++++++++++++++++++++++++++***************************************************************************************************+++++++*##**####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************************************************************************************************************************************************************+**+**##################################################################################################################################%%%######################################*++++++++++++++++++++*****++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+=====================+++++++++++******************************************************************###########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###***#********************************************************************************************************************************************************************************************************************###############**********************************************++===-------==++********************************************#############****************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################%@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************################################################################**********************************************************************************************************************************************************************************#########################%%%@@@%@%%%#*************+++++++++++++++++++++++++++++++++++++++++++++*****##########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************++++++++++++++++++++++++++++++++************+******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################****************************++++++++++++++++++++++++++++++++++++*******************************************************************************************************+*++++*##***####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***********************************************************************************************************************************************************************************************************************************+**###################################################################################################################################%%######################################**++++++++++++++++++++*****+++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++===================+++++++++++*******************************************************************##########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****#********************************************************************************************************************************************************************************************************************###############**********************************************+++==-------==++********************************************#############****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################%%@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************########*########################################################*******************************************************************************************************************************************************************************###########################%%%@@@%@%%%#*************+++++++++++++++++++++++++++++++++++++++++++++*****##########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************+++++++++++++++++++++++++++************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################%#########################################################################################***************************+++++++++++++++++++++++++++++++++************************************************************************************************************++**##*#*#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**********************************************************************************************************************************************************************************************************************************+**####################################################################################################################################%%#####################################**+++++++++++++++++++++*****+++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+==================+++++++++++********************************************************************#########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*#***********************************************************************************************************************************************************************************************************************##############************************************************++===------==++********************************************#############****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*#########################################################################%@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************##################################################################*******************************************************+*******************************************************************************************************************###############################%%%@@@%@%%%#**************++++++++++++++++++++++++++++++++++++++++++++*****##########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************++++++++++++++++++++++++++++******************+****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################%%%###########################################################################################**************************+++++++++++++++++++++++++******************************************************************************************************************++*##**#*#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************************************************************************************************************************************************************************+**#####################################################################################################################################%%#####################################*++++++++++++++++++++++*****++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+=================+++++++++++*********************************************************************########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**#**********************************************************************************************************************************************************************************************************************##############************************************************+++===-----==++********************************************#############*****************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*#########################################################################%%@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************###################################################################**************************************************************************************************************************************************************************################################%%%@@%%@%%%#**************+++++++++++++++++++++++++++++++++++++++++++******##########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*++=++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++++++++++++++++**+********************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################%%%%%%##########################################################################################*************************+++++++++++++++++++++******************************************************************************************************************++*++*##*#**#*######################################################%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************************************************************************************************************************************************######################################################################################################################################%%####################################*+++++++++++++++++++++++*****++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++================+++++++++++*********************************************************************########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**#**********************************************************************************************************************************************************************************************************************##############*************************************************+++==-----==++********************************************#############*****************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############*##########################################################################%@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************###################################################################**************************************************************************************************************************************************************************################################%%%@@%%@%%%#**************+++++++++++++++++++++++++++++++++++++++++++******##########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*++=+=++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++++++++++++++++**+*******************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################%%%%%%%%%%#########################################################################################************************++++++++++++++++*********************************************************************************************************************+*++++*###**##*#######################################################%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*********************************************************************************************************************************************************************************************************************************#######################################################################################################################################%%###################################*++++++++++++++++++++++++*****++++++***#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+****+++++===============+++++++++++*********************************************************************########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##************************************************************************************************************************************************************************************************************************##############**************************************************++===----==++********************************************#############*****************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################%@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************####################################################################***************************************************************+++********************************************************************************************************###############################%%%@@%@%%%%#**************+++++++++++++++++++++++++++++++++++++++++++*****###########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++=++++++++++++++++++++++===============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************++++++++++++++++++++++*************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################%%%%%%%%%%%##########################################################################################***********************+++++++**************************************************************************************************************************+**++++++*##****###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************************************************************************************************************************************************########################################################################################################################################%###################################*+++++++++++++++++++++++++*****+++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++********++=============+++++++++++**********************************************************************##################*####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************#############***************************************************+++==---===++********************************************#############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**###**######################################################################%@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************#####################################################################**************************************************************************************************************************************************************************###############################%%%@@@@%%%%#**************++++++++++++++++++++++++++++++++++++++++++******###########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++===============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************++++++++++++++++++++++*************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################%%%%%%%%%%%%%#########################################################################################**********************************************************************************************************************************************************++++++*##*****###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************************************************************************************************************************************************########################################################################################################################################%##################################**+++++++++++++++++++++++++*****+++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+===========++++++++++++***********************************************************************#################*####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************#############****************************************************++===--===++********************************************#############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############****#####################################################################%%@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************#####################################################################**************************************************************************************************************************************************************************###############################%%@@@@@%%%%#***************+++++++++++++++++++++++++++++++++++++++++******###########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++=++++++++++++++++++++++++==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************++++++++++++++++++++++************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################%%%%%%%%%%%%%%%##########################################################################################*****************************************************************************************************************************************************+++++++++*###***#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************************************************************************************************************************************+*******#########################################################################################################################################%#################################**+++++++++++++++++++++++++++****++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+==========+++++++++++****************************************************************************#################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*#**********************************************************************************************************************************************************************************************************************#############****************************************************+++=======++********************************************#############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############****#####################################################################%%@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************######################################################################**************************************************************************************************************************************************************************###############################%%@@@@@%%%%#***************+++++++++++++++++++++++++++++++++++++++++*****############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++=+=++++++++++++++++++++++=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************+++++++++++++++++++++************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################%%%%%%%%%%%%%%%%###########################################################################################*************************************************************************************************************************************************++++++++++++###*#*###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************************************************************************************************************************************************#########################################################################################################################################%##################################*++++++++++++++++++++++++++++****++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+========+++++++++++*********************************************************************************#########*##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#************************************************************************************************************************************************************************************************************************#############*****************************************************+++======++********************************************#############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***********#################################################################%%@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************######################################################################**************************************************************************************************************************************************************************###############################%%@@@@@%%%%#****************++++++++++++++++++++++++++++++++++++++++*****############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*+===++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************+++++++++++++++++++**************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################%%%%%%%%%%%%%%%%%#############################################################################################*******************************************************************************************************************************************++++++++++++++*###*##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************************************************************************************************************************************##########################################################################################################################################%#################################*+++++++++++++++++++++++++++++****+++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+=======+++++++++++**************************************************************************************####*##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*************************************************************************************************************************************************************************************************************************############******************************************************++======++********************************************#############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*************################################################################%%@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************######################################################################**************************************************************************************************************************************************************************###############################%%@@@@@%%%%#*****************++++++++++++++++++++++++++++++++++++++*****#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+==++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************+++++++++++++++++++*************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################%%%%%%%%%%%%%%%%%###############################################################################################*************************************************************************************************************************************+++++++++++++++++++*##*####################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################*+++++++++++++++++++++++++++++****+++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++=====+++++++++*****************************************************************************************##*###%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************############******************************************************+++=====++********************************************#############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########****************###############################################################%%@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************#######################################################################**************************************************************************************************************************************************************************##############################%%@@@@@@%%%%#******************+++++++++++++++++++++++++++++++++++++*****#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************+++++++++++++++++++*************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################%%%%%%%%%%%%%%%%%%################################################################################################****************************************************************************************************************************++***+++++++++++++++++++++*###*#*##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################**+++++++++++++++++++++++++++++****++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+==+++++++++++*****************************************************************************************##*###%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************############*******************************************************+++====++********************************************#############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########****************##############################################################%%@@@%@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************#######################################################################**************************************************************************************************************************************************************************##############################%%@@@@@@%%%%#******************+++++++++++++++++++++++++++++++++++++*****#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+=+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************++++++++**++++++++************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%%%%%%%%%%%##################################################################################################*********************************************************************************************************************++++++**+++++++++++++++++++++++*###*#*#*##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************************************************************************************************************************************************************#############################################################################################################################################################################*++++++++++++++++++++++++++++++****++******+++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#**++++++++++++*****************************************************************************************#**###%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#************************************************************************************************************************************************************************************************************************############*******************************************************+++====++*********************************************############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*****************##############################################################%%@@%@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************#######################################################################**************************************************************************************************************************************************************************##############################%%%@@@@@@%%%#*********************+++++++++++++++++++++++++++++++++******#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************+++++++++++++++**************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%%%%%%%%%%%%%%%%%%%####################################################################################################***************************************************************************************************************++++++++++++++++++++++++++++++++++*####*######################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************************************************************************************************************************************##############################################################################################################################################################################*++++++++++++++++++++++++++++++****+*******++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#*##*+++++++++++*****************************************************************************************#*#*##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#************************************************************************************************************************************************************************************************************************############********************************************************+++===++********************************************#############*****************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*******************############################################################%%@%@%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************#######################################################################***************************************************************************************************************************************************************************#############################%%@@@@@@@%%%#******************++++++++++++++++++++++++++++++++++++******#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%*+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************+++++++++++++++**************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%%%%%%%%%%%%%%%%%%%#####################################################################################################********************************************************************************************************+++++++++++++++++++++++++++++++++++++++*#####*######################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************************************************************************************************************************************************************##############################################################################################################################################################################*+++++++++++++++++++++++++++++++************+++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********####*++++++++***********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#************************************************************************************************************************************************************************************************************************############********************************************************++++=+++********************************************##############***************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########********************############################################################%%%@%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************#######################################################################***************************************************************************************************************************************************************************#############################%%@@@@@@@%%%#******************++++++++++++++++++++++++++++++++++++******#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************+++++++++++++++**********************+**#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%########################################################################################################*******************************************************+************************************+++++++++++++++++++++++++++++++++++++++++++++++**#####*########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************************************************************************************************************************************###############################################################################################################################################################################*+++++++++++++++++++++++++++++++***********++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##*###*++++++++**********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%************************************************************************************************************************************************************************************************************************############*********************************************************+++++++********************************************##############***************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********************###########################################################%%@%%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************########################################################################***************************************************************************************************************************************************************************#############################%%@@@@@@@%%%#******************+++++++++++++++++++++++++++++++++++******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************+++++++++++++++**********************+**%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################***********************++++*++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***************************************************************************************************************************************************************************************************************+*#################################################################################################################################################################################*+++++++++++++++++++++++++++++++***********+++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########**++++++**********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%************************************************************************************************************************************************************************************************************************############*********************************************************+++++++*********************************************#############***************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********************###########################################################%@%%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************########################################################################***************************************************************************************************************************************************************************#############################%%@@@@@@@%%%#******************+++++++++++++++++++++++++++++++++++******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************++++++++++++++***********************+*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************************************************************************************************************************#################################################################################################################################################################################*++++++++++++++++++++++++++++++++**********+++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########*++++***********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********************************************************************************************************************************************************************************************************************############**********************************************************++++++*********************************************#############***************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***********************##########################################################%%@%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************########################################################################***************************************************************************************************************************************************************************#############################%@@@@@@@@%%%#******************+++++++++++++++++++++++++++++++++++******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************++++++++++++++******************+*****#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########*####*####################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**************************************************************************************************************************************************************************************************************##################################################################################################################################################################################*++++++++++++++++++++++++++++++++**###*****+++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############*+++***********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***********************************************************************************************************************************************************************************************************************############***********************************************************++++**********************************************##############**************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***********************###########################################################%%%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************########################################################################***************************************************************************************************************************************************************************#############################%@@@@@@@@%%%#**********************++++++++++++++++++++++++++++++*******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************++++++++++++++************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######*#############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************************************************************************************************************************************************###################################################################################################################################################################################*+++++++++++++++++++++++++++++++++**##*****+++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*###########*+*********************************************************************************************#*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***********************************************************************************************************************************************************************************************************************############***********************************************************+++***********************************************##############*************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######************************##########################################################%%%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************#########################################################################***************************************************************************************************************************************************************************#############################%@@@@@@@@%%%#***********************+++++++++++++++++++++++++++++*******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************++++++++++++++************************%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######*#############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************************************************************************************************************************************#####################################################################################################################################################################################*+++++++++********++++++++++++++++**##*****+++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############*+******************************************************************************************#*#*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***********************************************************************************************************************************************************************************************************************############*************************************************************************************************************##############*************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************************##########################################################%%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************#########################################################################***************************************************************************************************************************************************************************#############################%@@@@@@@@%%%#**********************++++++++++++++++++++++++++++++*******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************+++++++++++++++++****************+****#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%********************************************************************************************************************************************************************************************************######################################################################################################################################################################################*++++++*************++++++++++++++*###****++++#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############***********************************************************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***##*****************************************************************************************************************************************************************************************************************###########***************************************************************************************************************#############************#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***********************############################################################%%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************#########################################################################***************************************************************************************************************************************************************************#############################%%@@@@@@@%%%#**********************++++++++++++++++++++++++++++++*******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************++++++++++++++++*******************+**%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################***********++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************************************************************************************************************************#######################################################################################################################################################################################*++++++***************+++++++++++++*###****+++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############***********************************************************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***#******************************************************************************************************************************************************************************************************************###########***************************************************************************************************************##############***********#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######************************#########*##################################################%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************#########################################################################***************************************************************************************************************************************************************************#############################%%@@@@@@@%%%#**********************++++++++++++++++++++++++++++++*******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************+++++++++++++++*******************+***%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######*###############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************************************************************************************************************#########################################################################################################################################################################################*+++++******************++++++++++**###***++++#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############**********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###*#******************************************************************************************************************************************************************************************************************###########***************************************************************************************************************##############**********###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************************########********###########################################%%%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************##########################################################################***************************************************************************************************************************************************************************#############################%%@@@@@@@%%%#**********************+++++++++++++++++++++++++++++++*******#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************+++++++++++++++*******************+**#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######*#################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*************************************************************************************************************************************************************************************************########################################################################################################################################################################################*#*+++++********####*******++++++++++*####***+++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############%#*********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####******************************************************************************************************************************************************************************************************************##########****************************************************************************************************************##############**********###################%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************************########********###########################################%%%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************##########################################################################**********************************************************************************************##***************************************************************************#############################%%@@@@@@@@%%%**********************+++++++++++++++++++++++++++++++*******#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************++++++++++++++***********************%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######*###################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************************************************************************************************************############################################################################################################################################################################################*++++*****###########*****+++++++++*####**++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############%#********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####********************************************************************************************************************************************************************************************************************########*****************************************************************************************************************###############********####################%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######****************************##***********############################################%%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************##########################################################################**********************************************************************************************###**************************************************************************#############################%%@@@@@@@@%%%**********************+++++++++++++++++++++++++++++++*******#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++++*********************+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************************************************************************************************************************************###########################################################################################################################################################################################*#**++++****#############*****+++++++**####**+++*#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############%%#***************************************************************************************#***#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###*********************************************************************************************************************************************************************************************************************#######******************************************************************************************************************###############********#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*******************************************##########################################%%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************###########################################################################**********************************************************************************************###**************************************************************************#############################%%@@@@@@@@%%%**********************+++++++++++++++++++++++++++++++********############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************++++++++++++++*********************+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%******************************************************************************************************************************************************************************************#############################################################################################################################################################################################***++++***################****++++++***####*++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++**##************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########%#%%#**************************************************************************************#***#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*********************************************************************************************************************************************************************************************************************######*******************************************************************************************************************################******##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#######********************************************#####****#################################%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************###########################################################################*********************************************************************************************#####*************************************************************************#############################%%@@@@@@@@%%%**********************++++++++++++++++++++++++++++++++********###########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************++++++++++++++********************+*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************************************************************************************************##############################################################################################################################################################################################****++++**####################**+++++***####*++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++*##**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########%##%#******************************************************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*********************************************************************************************************************************************************************************************************************#####********************************************************************************************************************#################****####################################%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********************************************####*****################################%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************###########################################################################*********************************************************************************************#####*************************************************************************#############################%%@@@@@@@@%%%************************++++++++++++++++++++++++++++++********###########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************++++++++++++*********************+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************************************************************************************************#################################################################################################################################################################################################***++++**#####################**++++****###*++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++**##****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########%#%#%%#*****************************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##**********************************************************************************************************************************************************************************************************************##***********************************************************************************************************************###############################################################%%%%%%%%%%%%%%%%%%%#######*******************************************************####################################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################%%%%##################################################################################################################
**********************************************************************************************###########################################################################*********************************************************************************************#####*************************************************************************#############################%%@@@@@@@@%%%*************************++++++++++++++++++++++++++++++********##########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************++++++++++++**********************#%%%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################*#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************************************************************************************************#################################################################################################################################################################################################*****++++**#####################**+++*****###*++++**+++++++++++++++++++++++++++++++++++++++++++++++++++**##******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########%%%%%#****************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##***********************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################################################%%%%%%%%%%%%%%%%%#######*********************************************************##################################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################%%###################################################################################################################
**********************************************************************************************############################################################################********************************************************************************************######*************************************************************************############################%%@@@@@@@%%%%**************************+++++++++++++++++++++++++++++*********#########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++**********************%%%*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%********************************************************************************************************************************************************************************###################################################################################################################################################################################################****++++**#######################**++*****###*+++**+++++++++++++++++++++++++++++++++++++++++++++++++++**##*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########%#%%#%%%#***************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##***********************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################################################%%%%%%%%%%%%#########*********************************************************##################################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************############################################################################********************************************************************************************######*************************************************************************########################**##%%@@@@@@@%%%%#**************************+++++++++++++++++++++++++++++*********########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++**********************%#**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************************************************************************************************#####################################################################################################################################################################################################*****++++**#######################*********##**+++**+++++++++++++++++++++++++++++++++++++++++++++++++**###********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#######%#%#%%%%%%%#**************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##***********************************************************************************************************************************************************************************************************************************************************************************************************************************************#########################################################################%%##############*********************************************************##################################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************#############################################################################********************************************************************************************######*************************************************************************########################**##%%%@@@@@@%%%%#***************************+++++++++++++++++++++++++++***********#######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++*********************#%*+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################*##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************************************************************************************######################################################################################################################################################################################################*****++++**#########################********##**++**++++++++++++++++++++++++++++++++++++++++++++++++**###**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******######%#%%%%%%%%%%**************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##***********************************************************************************************************************************************************************************************************************************************************************************************************************************************#########################################################################################************************************************************###############################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************#############################################################################*******************************************************************************************#######*************************************************************************######################*****#%%%@@@@@@%%%%#***************************+++++++++++++++++++++++++++************######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++*********************#***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************************************************************************************************************#######################################################################################################################################################################################################******++++**#########################************++**++++++++++++++++++++++++++++++++++++++++++++++***###***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#########%%%%%%%%%#*************************************************************************************##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********************************************************************************************************************************************************************************************************************************************************************************************************************************************#########################################################################################**************************************************************###**########################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************#############################################################################*******************************************************************************************########*********************************************++++++++++*****************#####################******#%%%@@@@@@%%%%#****************************+++++++++++++++++++++++++++++**********#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++***********************+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************************************************************************************************########################################################################################################################################################################################################******++++***##########################***********+**++++++++++++++++++++++++++++++++++++++++++++++**####***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#######%#%%%%%%%%%%#*************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********************************************************************************************************************************************************************************************************************************************************************************************************************************************#########################################################################################*********************************************************************######################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************#############################################################################*******************************************************************************************########**********************************************+++++++++++***+***********####################*******#%%%@@@@@@%%%%#****************************++++++++++++++++++++++++++++++*********#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************++++++++++++**********************+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************************************************************************************************************************#########################################################################################################################################################################################################*******++++**############################**********+**++++++++++++++++++++++++++++++++++++++++++++**#####************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###%##%%%%%%%%%%%%%#************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################################################################***********************************************************************####################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************##############################################################################*******************************************************************************************########**************#****************************++++++++++++++++++++++*******##################*********#%%%@@@@@@@%%%#***************************++++++++++++++++++++++++++++++++********######################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++**************+**+*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************************************************************************************##########################################################################################################################################################################################################*******+++++*#############################************++++++++++++++++++++++++++++++++++++++++++***######************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********####%%%%%%%%%%%%%%%#************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################################################################**************************************************************************##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************##############################################################################*******************************************************************************************#########*************#****************************++++++++++++++++++++++*******##################*********%%%%@@@@@@@%%%#******************++++++***+++++++++++++++++++++++++++++++++*******######################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************+++++++++**************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##************************************************************************************************************************************************************############################################################################################################################################################################################################********++++**#############################*****++*****++++++++++++++++++++++++++++++++++++++++**#######**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********####%#%%%%%%%%%%%%%%#************************************************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################################################################*************************************************************************##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************##############################################################################*******************************************************************************************#########************##****************************+++++++++++++++++++++++******#################**********%%%%@@@@@@@%%%#***************++++++++++**++++++++++++++++++++++*+++++++++++******######################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************+++++++**************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************************************************************************************##############################################################################################################################################################################################################********+++++**#############################****+++*****+++++++++++++++++++++++++++++++++++++++**########*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************###%#%%%%%%%%%%%%%%%************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################################################################***************************************************************************################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************##############################################################################*******************************************************************************************##########********#####****************************++++++++++++++++++++++++*****#################******+++*%%%%@@@@@@@%%%#**************+++++++++++++++++++++++++++++++++++**++++++++++++*****#####################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************++++++**************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************************************************************************###############################################################################################################################################################################################################*********++++**##############################****+++*##*++++++++++++++++++++++++++++++++++++++**##########************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************###%#%%%%%%%%%%%%%%%#***********************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################################################################****************************************************************************###############################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################%%%%%##############################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************###############################################################################*******************************************************************************************##########********#####***************************+++++++++++++++++++++++++******################*****++++*%%%%@@@@@@@%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++******####################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************+++******************+********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************************************************************************#################################################################################################################################################################################################################********+++++**##############################***++++*##*++++++++++++++++++++++++++++++++++++***##########*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************###%#%%%%%%%%%%%%%%%%#***********************************************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#************************************************************************************************************************************************************************************+++++++++++++++++++++*****************************************************************************************************************************************######################################################################################****************************************************************************###############################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################%%%%%%##############################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************###############################################################################*******************************************************************************************###########******######***************************+++++++++++++++++++++++++******###############******++++*%%%@@@@@@@@%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++++++*****####################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************************************************************##################################################################################################################################################################################################################********++++++**###############################*+++++*##*+++++++++++++++++++++++++++++++++++**###########*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************##%##%%%%%%%%%%%%%%%%%***********************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##*********************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************#####################################################################################*****************************************************************************##################################################################%%%%%%%%%%%%%################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************###############################################################################******************************************************************************************########################***************************++++++++++++++++++++++++++*****###############******++++*%%%@@@@@@@@%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++++++******###################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************#*******************************************************************************************************************************###################################################################################################################################################################################################################*********+++++***###############################*++++**##+++++++++++++++++++++++++++++++++***############************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#%#%%%%%%%%%%%%%%%%#%#**********************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************++***********************************####################################################################################******************************************************************************###############################################################%%%%%%%%%%%%%%%%%###############################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###################################%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************###############################################################################******************************************************************************************########################***************************++++++++++++++++++++++++++*****###############*****+++++#%%%@@@@@@@@%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++++++*******##################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************+**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********####%###**************************************************************************************************************************######################################################################################################################################################################################################################********++++++***##############################**++++*##*++++++++++++++++++++++++++++++++***############*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#%#%#%%%%%%%%%%#%%#%%%**********************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********************************************************************************************************************************************+***********+++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************+++++++++*****************************####################################################################################*******************************************************************************#############################################################%%%%%%%%%%%%%%%%%%%##############################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###################################%%%%%%%#################%#######################################%###################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************###############################################################################******************************************************************************************########################****************************+++++++++++++++++++++++++*****###############*****+++++#%%%@@@@@@@@%%%***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************++*****************+*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#############################%%###########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********######***************************************************************************************************************************#######################################################################################################################################################################################################################**#*****+++++++**###############################*+++++*##*+++++++++++++++++++++++++++++++**#############*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#%##%%%%%%%%%%%%%%%%%%#*********************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************++++++++++++++++************************##############################*******##############################################**********************************************************************************########################################################%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###################################%%%%%%%%%################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************###############################################################################******************************************************************************************########################****************************+++++++++++++++++++++++++*****###############*****+++++#%%%@@@@@@@@%%%**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++********################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************+*******************+*+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############################%%%%%########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************************************************************#######################################################################################################################################################################################################################*********+++++++**################################*+++++*##*++++++++++++++++++++++++++++++**#############*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%#%%%%%%%%%%%%%%%%%%%#********************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************++++++++++++++++++++++********+**********###########################******************######################################**********************************************************************************########################################################%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%####################################%%%%%%%%%################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************###############################################################################******************************************************************************************#######################*****************************+++++++++++++++++++++++++******##############*****+++++#%%%@@@@@@@@%%%**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************+*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#############################%%%%%#%%%%%###################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************************************************##########################################################################################################################################################################################################################*********+++++++**################################*++++*###*++++++++++++++++++++++++++++***#############**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%#%%%%%%%%%%%%%%%%%%%#*******************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++********#########################********************#####################################**********************************************************************************#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%####################################%%%%%%%%%################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************################################################################################*****************************************************************************************#######################*****************************+++++++++++++++++++++++++******#############******+++++#%%%@@@@@@@@%%%********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************+**+#@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%#########%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************************************************####%######################################################################################################################################################################################################################*#*******++++++++**################################*++++*###*+++++++++++++++++++++++++++**###############*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%###%%%%%%%%%%%%%%%%%%#******************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++*******#######################***********************####################################************************************************************************************####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################%%%%%%%%%%###############################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************################################################################################****************************************************************************************########################******************************++++++++++++++++++++++++******#############******+++++#%%%@@@@@@@@%%%********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************%@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**********************************************************************************************************************************###%########################################################################################################################################################################################################################**#******+++++++++*#################################*+++***##*+++++++++++++++++++++++++**#################*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#####%%%%%%%%%%%%%%%%%%#*****************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++******###################**************************####################################************************************************************************************###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################%%%%%%%%%%###############################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************################################################################################****************************************************************************************#######################*********************************++++++++++++++++++++++*******###########******++++++#%%%@@@@@@@@%%%*+*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************%@@@@@@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##********************************************************************************************************************************##%###########################################################################################################################################################################################################################*********++++++++**#################################**++****#*++++++++++++++++++++++++**##################************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************####%%%%%%%%%%%%%%%%%%%#****************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************+++++++++++++++++++++++++++++++++++++++++*****################*****************************##################################**************************************************************************************##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%#####################################%%%%%%%%%%%##############################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************################################################################################****************************************************************************************#######################*********************************+++++++++++++++++++++++******###########******++++++#%%%@@@@@@@@%%%*++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++*******************************************************************************************************************************************************************#%@@@@@@#*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%########%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************************************************************************************##########################%%%##################################################################################################################################################################################################*********+++++++++**##################################*+*****#*+++++++++++++++++++++++**###################************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#####%%%%%%%%%%%%%%%%%%#***************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************+++++++++++++++++++++++++*****##############*******************************##################################****************************************************************************************###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################%%%%%@@@@@@@@@@@@@@@@@@%%%%%#######################################%%%%%%%%%%##############################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************################################################################################****************************************************************************************#######################*********************************+++++++++++++++++++++++******##########*******++++++#%%%@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++*****************************************************************************************************************************************************************+*%@@@@@@@#*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************************************#############################%%%%################################################################################################################################################################################################*********++++++++++**##################################*+*****#*+++++++++++++++++++++**#####################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#####%%%%%%%%%%%%%%%%%%#***************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************++++++******#############**********+++******************##################################*****************************************************************************************##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################%%%%%%%@@@@@@@@@@@@@@@@%%%%########################################%%%%%%%%%%##############################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************#################################################################################***************************************************************************************######################***********************************++++++++++++++++++++++********######********+++++++#%%@@@@@@@@@%%%*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++******************************************************************************************************************************************************************+#@@@@@@@%**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###%##########%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************************************##%%#############################%%%%%############################################################################################################################################################################################*********++++++++++**###################################*****+***++++++++++++++++++++**######################**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#####%%%%%%%%%%%%%%%%%%#*************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*********************+++++++++++******************************++++++*****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************++++*******************************************#########*********+++++++++++++***********##################################*****************************************************************************************#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################%%%%%%@@@@@@@@@@@@@@%%%%##########################################%%%%%%%%%%%###########################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************#################################################################################***************************************************************************************######################***********************************+++++++++++++++++++++++*********************+++++++#%%@@@@@@@@@%%%*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++*******************************************************************************************************************************************************************%@@@@@@@#+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*********************************************************************************************************************####%##################################%%%%##########################################################################################################################################################################################**#******++++++++++**###################################*****+***+++++++++++++++++++**######################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#####%%%%%%%%%%%%%%%%%#*************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*******************++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************++***********+++++++++++++************************************++++++++++++++++++*********#################################*****************************************************************************************#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################%%%%%%%%@@@@@@@@@@@%%%%###########################################%%%%%%%%%%%###########################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************#################################################################################***************************************************************************************######################***********************************++++++++++++++++++++++++********************++++++*#%%@@@@@@@@@%%%*******+++++++++++++++++++++++++++++++++++***********************************#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************++++++++++++++******************************************************************************************************************************************************************+#@@@@@@@%**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*******************************************************************************************************************#####%####################################%%%%%#######################################################################################################################################################################################*********+++++++++++**####################################***++***+++++++++++++++++***#####################*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######%%%%%%%%%%%%%#%##*************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++**++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++******################################*******************************************************************************************#*##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################%%%%%%%%@@@@@@@@%%%%############################################%%%%%%%%%%%#############################################%%%%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%##############################################################################################################
********************************************************************************************################################################################################***************************************************************************************######################***********************************+++++++++++++++++++++++++*****************++++++++*%%%@@@@@@@@@%%%#******++++++++++++++++++++++++++++++*****************************************############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************++++++++++++++*******************************************************************************************************************************************************************%@@@@@@@%*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************************************##%%%%####%%##################################%%%%#####################################################################################################################################################################################******#***+++++++++++**####################################***++***++++++++++++++++**######################*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********########%%%%%%%%%%%%##*************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++******################################*********************************************************************************************#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################%%%%%%%%%%%%%@%%%%%#############################################%%%%%%%%%%%%##########################################%%%%%%%%%%%#####################################################################################################################################################################################################################%%%%%%%%%%%%%%##############################################################################################################
********************************************************************************************################################################################################***************************************************************************************#####################************************************++++++++++++++++++++++++++***************+++++++++*%%%@@@@@@@@@%%%#*******++*++++++++++++++++++++++++++*****************************************############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************+++*******************************************************************************************************************************************************************#@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%############%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************************##%%###%%#########################################%%%%##################################################################################################################################################################################*********+++++++++++++**####################################**+++***++++++++++++++***#####################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########%#%%%%%%%%%#**************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++******###############################**********************************************************************************************########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################%%%%%%%%%%%%%%###############################################%%%%%%%%%%%%###############################%%%########%%%%%%%%%%%%%###############################################################################################################################################################################################################%%##%%%%%%%%%%%%%%##############################################################################################################
********************************************************************************************################################################################################**************************************************************************************#######*****##########*************************************+++++++++++++++++++++++++++***********+++++++++++*%%%@@@@@@@@@%%%#*******++*+++++++++++++++++++++++++++****************************************############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************+*%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************************###%%%%%%%#############################################%%%%###############################################################################################################################################################################******#**++++++++++++++**#####################################*+++*#*+++++++++++++**######################***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#############%%%%###**************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++*****##############################************************************************************************************************#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################%%%%%%%%%##################################################%%%%%%%%%%%%#############################%%%%########%%%%%%%%%%%%%%%############################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%##############################################################################################################
********************************************************************************************################################################################################**************************************************************************************######********########*************************************+++++++++++++++++++++++++++++*******+++++++++++++*%%%@@@@@@@@@@%%#********+*+++++++++++++++++++++++++++****************************************############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************************##%%%%%%%%%%%%%############################################%@%%############################################################################################################################################################################*********++++++++++++++**#####################################**+++*#*+++++++++++***######################****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###############%%##**************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++*****#############################***************************************************************************************************###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################%%%%%%%%%%%%#############################%%%%#########%%%%%%###################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%##############################################################################################################
********************************************************************************************################################################################################**************************************************************************************#####*********########*************************************+++++++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%#**********++++++++++++++++++++++++++++****************************************###########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%%%#############%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************************##%%%%%%%%%%#%%%################################################%%%##########################################################################################################################################################################*********+++++++++++++++**#####################################*++++*#*++++++++++**#######################****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###################**************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#############################***************************************************************************************************###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################%%%%%%%%%%%%#############################%%%%##########%%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%##############################################################################################################
*********************************************************************************************###############################################################################**************************************************************************************#####*********#######***************************************++++++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%#********+++++++++++++++++++++++++++++*****************************************###########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************+***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+#%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************************##%%%%%%%%%%%%%%%%#################################################%%%%########################################################################################################################################################################********++++++++++++++++**#####################################*++++*#*++++++++***#######################********************************************++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##############%###**************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****############################***************************************************************************************************###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************##########################*####################################################**************************************************************************************#####*********#######***************************************++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#********++++++++++++++++++++++++++++++*****************************************##########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************+*+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************##%%%%%%%%%%%%%%%%%%###################################################%%%#######################################################################################################################################################################****#**+++++++++++++++++**#####################################*++++*#*+++++++**########################***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##################**************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****############################*****************************************************************************************************################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************#################*#*************###############################################**************************************************************************************#####*********#######***************************************++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#********++++++++++++++++++++++++++++++******************************************#########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%####################################################%%%%###################################################################################################################################################################********++++++++++++++++++**#####################################**+++*#*++++++**#########################***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#################*************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%***********++++++++++++++++++++=========+++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#######################******************************************************************************************************################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%###################%%###%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************################*****************##############################################**************************************************************************************####**********#######***************************************++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#********+++++++++++++++++++++++++++++++******************************************#*######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************+#@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%######################################################%%@%%################################################################################################################################################################*********++++++++++++++++++**######################################*+++*#*++++**##########################****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#################*************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%**********+++++++++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#######********************************************************************************************************##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%##################%%%%##%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************##############*******************##############################################*************************************************************************************#####*********########***************************************++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#********++++++++++++++++++++++++++++++++************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+***#%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################%%@%%###############################################################################################################################################################********+++++++++++++++++++*#######################################*+++*#*++**###########################********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#################************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%*******++++++++++++++++++============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************#********+++++**********************************************************************************************#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%##################%%%%##%%%%%%%%%%%%%%%%#%%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************#############********************##############################################*************************************************************************************#####*********#######****************************************++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#********++++++++++++++++++++++++++++++++************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************#@@@@@@@@@@@@@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************##%%%%%%%%%#%%%%%%%%%%%%%%%%##########################################################%%@%#############################################################################################################################################################********++++++++++++++++++++*#######################################*+++*#*+**###########################**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********################************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%***+*+++++++++++++++=================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======++++++++++++++++***********************************+++++++**********************************************************************************************############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################################%%%%%%%%%%%###################%%###%%%%%%%%%%%%%%%%##%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************#############********************##############################################*************************************************************************************######********#######***************************************+++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#********++++++++++++++++++++++++++++++++*************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%%%##########################################################################################################################################################********+++++++++++++++++++++*#######################################**+**#***###########################***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********################***********************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%***+++++++++++++++++++++++++++++++====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+++++++++++++*******+++++++++********************++++++++++++++***************************************************************************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%#######################%%################%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************#############*******************################################################************************************************************************************######*******########***************************************+++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#********++++++++++++++++++++++++++++++++*************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%#############################################################%%%%########################################################################################################################################################********++++++++++++++++++++++*#######################################**+**##############################*************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********################***********************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**++++++++++++++++++++++++++++++++++++++++++++++++++++++=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++******************++++++++++++****************************************************************************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%##########################################%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************#############********************##############################################*************************************************************************************######*******########*****************************************+++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#*********++++++++++++++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+*********************************************************************************************************************************************************************************+**+***+*%@@@@@@@@@@@@@%*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%%%%#####################################################################################################################################################*****#**+++++++++++++++++++++++*###################################%####****#############################***************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******################***********************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++*****************************************************************************************************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%##############################################################################################################
*********************************************************************************************#############********************##############################################************************************************************************************#######******#########*****************************************+++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#*********++++++++++++++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************+*******%@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************************************####%%%%#%%%%%%%%%%%%%%%%##############################################################################%%%%####################################################################################################################################################********+++++++++++++++++++++++*###################################%%###***#%###########################****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******################**********************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%##############################################################################################################
*********************************************************************************************#############********************##############################################************************************************************************************########*****#########*****************************************+++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#*********+++++++++++++++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************+**#@@@@@@@@@@@@@@%*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************###%%%%%%%%%%%%%%%%%%%%%%##################################################################################%%%%%################################################################################################################################################*********++++++++++++++++++++++++*#################################%%%%###**##%##########################*****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******################**********************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%#############################################################################################################
*********************************************************************************************############*********************##############################################************************************************************************************######################*****************************************++++++++++++++++++++++++++++++++++++++++++++++*#%%%@@@@@@@@@@%%#*********+++++++++++++++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************+***+*%@@@@@@@@@@@@@@#*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************###%%%%%%######%%%%%%%%%########################################################################################%%%%#############################################################################################################################################**********+++++++++++++++++++++++++*################################%%%%%#%#####%#########################******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#################*********************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################################%%%%%%%%%%%%################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%############################################################################################################
**********************************************************************************************###########*********************##############################################************************************************************************************######################*****************************************++++++++++++++++++++++++++++++++++++++++++++++*%%%%@@@@@@@@@@%%#***********+++++++++++++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************+*+****#@@@@@@@@@@@@@@%**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************###%%%####%%%%%%%#########%#########################################################################################%%%%%###########################################################################################################################################**********+++++++++++++++++++++++++*###############################%%%%%%%%#####%########################*###*****************************###*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##################********************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################################%%%%%%%%%%%%%##################%%%%%%####################%#############%%%##################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%#################################################################
**********************************************************************************************###########*********************##############################################***********************************************************************************#######################******************************************+++++++++++++++++++++++++++++++++++++++++++++*%%%%@@@@@@@@@@%%#***********++++++++++++++++++++++++++++++++**********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@%*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************####%%##%%%#######%%%####################################################################################################%%%%#########################################################################################################################################*********++*+++++++++++++++++++++++**#############################%%%%%%%%%%#####%#########################*****************************##########*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##################********************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################%%%%%%%%%%%%%#################%%%%%%%%#################%%%############%%%%%#################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%################################################################
***********************************************************************************************#########**********************##############################################**********************************************************************************#########################*****************************************+++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@%%#************+++++++++++++++++++++++++++++++**********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************+*#@@@@@@@@@@@@@@@#*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************####%%%%%##%%###%%%%##########################################################################################################%%@%%######################################################################################################################################**********+*++++++++++++++++++++++++*############################%%%%%%%%%%%%%####%#########################***************************############***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###################***+*+++++++++****************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################%%%%%%%%%%%%%#################%%%%%%%%################%%%%############%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################
***********************************************************************************************########***********************##############################################**********************************************************************************#########################*****************************************+++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@%%#************+++++++++++++++++++++++++++++++**********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@%**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***********************************************************###%%%%%%####%####%################################################################################################################%%%%%%####################################################################################################################################************++++++++++++++++++++++++*###########################%%%%%%%%%%%%%%####%###########################************************#############**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###################**++++++++++++++**************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################################%%%%%%%%%%%%#################%%%%%%%%###############%%%%%############%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%##
***************************************************************************************************##************************###############################################*********************************************************************************###########################****************************************+++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%%#************++++++++++++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@#**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%#############%%%%%%############%###%%##%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************######%%%%################################################################################################################################%%%%%#################################################################################################################################*************++++++++++++++++++++++++**#########################%%%%%%%%%%%%%%%%####%##########################***********************##############***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******####################*+++++++++++++++++++++***++*+************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################################%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%######################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################
*****************************************************************************************************************************###############################################*********************************************************************************###########################****************************************+++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%%#*************++++++++++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@%***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************%%%#%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%###%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************##########%%%%%%#################################################################################################################################%%%%%%###############################################################################################################################************+++++++++++++++++++++++++*#########################%%%%%%%%%%%%%%%%%####%###########################*********************###############**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##################**++++++++++++++++++++++++++++++********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%#####################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################
*****************************************************************************************************************************###############################################*********************************************************************************###########################****************************************+++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%%#*************++++++++++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@#**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###******************************************######%%%%%%%%%%%%%%%%%%%###############################################################################################################################%%%%%%##############################################################################################################################***********+++++++++++++++++++++++++**########################%%%%%%%%%%%%%%%%%%%###%###########################*******************#################*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************################**+++++++++++++++++++++++++++++++**+++*************************%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%######
*****************************************************************************************************************************###############################################********************************************************************************#############################****************************************++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%%#**************+++++++++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************%%##%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########********************########%%%%%%%%%%%%###%%%%%%%%%%%%%################################################################################################################################%%%%%%###########################################################################################################################***********+++++++++++++++++++++++++***######################%%%%%%%%%%%%%%%%%%%%%###%###########################*****************###################********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************########**++++++++++++++++++++++++++++++++++*************************#%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%######
******************************************************************************************************************************##############################################********************************************************************************#############################****************************************++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%%#***************++++*+++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@%***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%###%%%###%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%##################################################################################################################################%%%%%%#########################################################################################################################**********+++++++++++++++++++++++++****################%%##%%%%%%%%%%%%%%%%%%%%%%%###%###########################***************#####################********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************#**##***+++++++++++++++++++++++++++++*****************************#@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%#%%%%
******************************************************************************************************************************##############################################********************************************************************************#############################****************************************++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%%#*****************+***++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************+*@@@@@@@@@@@@@@@@#**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################*#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%####%%%%%%%%%%%%####################################################################################################################################%%%%%%#######################################################################################################################**********+++++++++++++++++++++++++*****#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%############################************#######################*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************##*##****++++++++++++++++++++++++*********************************%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%###################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################%%%%##%%%%
******************************************************************************************************************************##############################################*******************************************************************************###############################***************************************++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%%#*********************+++++++++++++++++***************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@%***#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****###%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%##%%%%%%%%%%%%%#########################################################################################################################################%%%%%%%####################################################################################################################**********+++++++++++++++++++++++++*****###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*********#########################*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************+++++++++++++++++++*************************************#%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******########################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%####################################
******************************************************************************************************************************##############################################*******************************************************************************###############################***************************************++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@%%#*********************+++++++++++++++++***************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@#***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#%%%###%%%%##########################################################################################################################################%%%%%%%###################################################################################################################*********+++++++++++++++++++++++++*****#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################********#########################******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++*******************************************#%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###########################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%###############################%####
******************************************************************************************************************************#############################################********************************************************************************###############################***************************************++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@%%#*********************++++++++++++++++*************************************************++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************+**+****%@@@@@@@@@@@@@@@%****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################%%%%%%%#################################################################################################################*******++++++++++++++++++++++++++*****#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*****############################*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++*****************************************************#%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##############################********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%#########################################################################################################################################################################%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################
******************************************************************************************************************************#############################################********************************************************************************###############################***************************************++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@%%#*********************++++++++++++++++*************************************************++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************+#%@@@@@@@@@@@@@@@#****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################******#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*****##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################%%%%%%%###############################################################################################################*******++++++++++++++++++++++++++*****##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*###############################*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************++++++**********************************************************#@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%#########################################################################################################################################################################%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################
******************************************************************************************************************************##############################################*******************************************************************************###############################****************************************+++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@%%#*********************++++++++++++++++************************************************+++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################******################%%%%%%%%%%%%%%%%%%%%%####*****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################%%%%%%%############################################################################################################*******++++++++++++++++++++++++++*****##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****####################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%#########################################################################################################################################################################%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################
*******************************************************************************************************************************##############################################*****************************************************************************################################****************************************+++++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@%%#*********************++++++++++++++++************************************************+++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@%****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################********###############%%%%%%%%%%%%%%%%%%%%####**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################%%%%%%##########################################################################################################*******++++++++++++++++++++++++++*****###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************+++++********************++++++++++++*****************************************#%%@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***######################################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%#########################################################################################################################################################################%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################
*******************************************************************************************************************************##############################################*****************************************************************************################################****************************************+++++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@%%#*********************++++++++++++++++************************************************+++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################**********#####################%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################%%%####################################################################%%%%%%%#######################################################################################################*******++++++++++++++++++++++++++*****################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************++++++++++++*********++++++++++++++++++++++++++++++++++++++**********************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#########################################*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%#########################################################################################################################################################################%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################
********************************************************************************************************************************#############################################*****************************************************************************################################****************************************++++++++++++++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@%%#*********************+++++++++++++++*************************************************+++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@%*****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################***********##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################%%%%%%%%##################################################################%%%%%%%#####################################################################################################*****+++++++++++++++++++++++++++****########*#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###########################################*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%#########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################
********************************************************************************************************************************#############################################*****************************************************************************################################****************************************++++++++++++++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@%%#*********************+++++++++++++++*************************************************+++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################***********################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################%%%%%%%%%%##################################################################%%%%%%###################################################################################################*****++++++++++++++++++++++++++*****#######****########%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%###########################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############################################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************###################%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%#########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################
********************************************************************************************************************************#############################################*****************************************************************************################################*****************************************+++++++++++++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@%%#**********************++++++++++++++**************************************************++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************+#@@@@@@@@@@@@@@@@%*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#######################################*****************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################%%%%%%%%%%%##################################################################%%%%%%%################################################################################################****++++++++++++++++++++++++++++****########***#########%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%###########################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************##################%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%#########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################
********************************************************************************************************************************#########################******###############****************************************************************************################################*****************************************+++++++++++++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@%%#**********************+++++++++++++***************************************************++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************+**%@@@@@@@@@@@@@@@@#*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################***************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################%%%%%%%%%%%####################################################################%%%%%%##############################################################################################****+++++++++++++++++++++++++++*****#######******########%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@%%%%%##########################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**################################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************##################%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%#############################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%########%%%%%%%%####################################
********************************************************************************************************************************########################*********#############****************************************************************************################################*****************************************+++++++++++++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@%%#**********************++++++++++++++**************************************************++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@%******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################***************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++************************#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################****************#############%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################%%%%%%%%%%%####################################################################%%%%%%%#############################################################################################*++++++++++++++++++++++++++++*****########*****#########%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%@%%%##########################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#################################################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************##################%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#####%%#############################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%####################################
********************************************************************************************************************************#######################**********#############****************************************************************************################################*****************************************+++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@%%#*+********************++++++++++++++**************************************************++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++************************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################****************#############%%%%%%%%%%%%%%%#####################################################################################################################%%%%%%%%%%%#####################################################################%%%%%%%%#########################################################################################***+++++++++++++++++++++++++++*****#######*******########%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@%@%%%########################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###################################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************##################%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%###########%%%%%#############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%####################################
********************************************************************************************************************************######################************############*****************************************************************************###############################*****************************************+++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@%%#*++*******************++++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################******************************************************+++++++++++++++++++++++++++++++++++++++++++++++*************************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################*****************##############################################################################################################################################%%%%%%%%%%%#######################################################################%%%%%%%########################################################################################**+++++++++++++++++++++++++++****########********########%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%########################################################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%#####################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################################################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************##################%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%##############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%####################################
*******************************************************************************************************************************######################*************############*******************************************************************************#############################*****************************************+++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@%%#*+++*******************+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@%******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################*******************************************************++++++++++++++++++++++++++++++++++++++++++++++************************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################*****************###########################################################################################################################################%%%%%%%%%%%########################################################################%%%%%%%%#####################################################################################**++++++++++++++++++++++++++*****########*********#######%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@%%%#######################################################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************###################%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%##############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%#####################%%%%%%#########
*******************************************************************************************************************************######################*************############**********************************************************************************##########################******************************************++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@%%#*++++++++**+++*********+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++***************+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@*******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################*******************************************************+++++++++++++++++++++++++++++++++++++++++++++*************************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################*******************#######################################################################################################################################%%%%%%%%%###########################################################################%%%%%%%####################################################################################*++++++++++++++++++++++++++****#########**********#######%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@%%%%%######################################################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************####################%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%############################################################################################################################%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%##############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%###################%%%%%%%%########
*******************************************************************************************************************************#####################**************#############*********************************************************************************##########################******************************************++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%#*++++++++*++++*********+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++++++++++********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@%*******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################*******************************************************+++++++++++++++++++++++++++++++++++++++++++++************************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################****************#####################################################################################################################################%%%%%%%%%%###########################################################################%%%%%%%##################################################################################*++++++++++++++++++++++++++***##########**********#########%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@%%%%%######################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************####################%%%%%%%%%%%%%%%%%%%%%%%###############################################%%%%%%%%%%%%########################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%###############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%##################%%%%%%%%########
*******************************************************************************************************************************#####################**************#############*********************************************************************************##########################******************************************++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%#*++++++++*++++*********+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@#*******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################********************************************************++++++++++++++++++++++++++++++++++++++++++++************************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################****************##################*******########################################################################################################%%%%%%%%%%%%%##########################################################################%%%%%%%%##############################################################################**++++++++++++++++++++++++****#########***********#####%####%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%######################################################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#########################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********##################%##%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%@@@@%%%%%#####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%##################%%%%%%%%########
******************************************************************************************************************************######################**************##############*********************************************************************************#########################******************************************++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%%*++++++++++++++********+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*+++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@%*******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################********************************************************++++++++++++++++++++++++++++++++++++++++++++************************%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################*********************************************################################################################################################%%%%%%%%%%%%%%##########################################################################%%%%%%%%#############################################################################*++++++++++++++++++++++++***##########***********###########%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@%%%%%######################################################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********######################%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%@@@@@@@@@@%%####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%########
******************************************************************************************************************************######################***************#############*********************************************************************************#########################******************************************++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%%*++++++++++++++********+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@#*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################********************************************************++++++++++++++++++++++++++++++++++++++++++++***********************#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################**********************************************###########################################################################################%%%%%%%%%%%%%%%###########################################################################%%%%%%%%##########################################################################*+++++++++++++++++++++++****#########***********#############%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%######################################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##########################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********######################%%%%%%%%%%%%%%%%%%%%%%#############################################%%%@@@@@@@@@@@@%%##################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%########
******************************************************************************************************************************#####################****************#############*********************************************************************************#########################******************************************++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%%*++++++++++++++********+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@%********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#######################################################********************************************************++++++++++++++++++++++++++++++++++++++++++++***********************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################************************************************######################################################################################%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%########################################################################*+++++++++++++++++++++++**##########***********######*#######%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@%%%%%%%######################################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++********########################%%%%%%%%%%%%%%%%%%%%%%#############################################%%@@@@@@@@@@@@@@%%################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%#######
******************************************************************************************************************************#####################****************##############*******************************************************************************##########################******************************************++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%%*++++++++++++++********+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@#********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################********************************************************++++++++++++++++++++++++++++++++++++++++++++**********************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################*************************************************##################################################################################%%%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%#####################################################################**+++++++++++++++++++++***##########**********######***#######%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@%%%%%%%######################################################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++******#########################%%%%%%%%%%%%%%%%%%%%%%############################################%%@@@@@@@@@@@@@@@@%################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%#######
******************************************************************************************************************************#####################****************##############*******************************************************************************##########################******************************************++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%%*++++++++++++++*********++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@%********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################********************************************************+++++++++++++++++++++++++++++++++++++++++++***********************#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################****************************************************###############################################################################%%%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%####################################################################*++++++++++++++++++++***##########*********#######*****######%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%#####################################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###################%%%%%%%%%%%%%%%%%%#############################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++*******##########################%%%%%%%%%%%%%%%%%%%%%#############################################%%@@@@@@@@@@@@@@@@%###############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%######
******************************************************************************************************************************#####################****************##############*******************************************************************************##########################*******************************************+++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%%*++++++++++++++*********++++++++++++*****************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@#********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################*********************************************************++++++++++++++++++++++++++++++++++++++++++**********************#%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################*********************************************************##########################################################################%%%%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%#################################################################*+*++++++++++++++++++**###########*******########********#####%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%#####################################################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++*******###########################%%%%%%%%%%%%%%%%%%%%##############################################%@@@@@@@@@@@@@@@@@@%##############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%#####
*****************************************************************************************************************************######################****************###############******************************************************************************##########################*******************************************+++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%%*++++++++++++++*********++++++++++++*****************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@%*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################********************************************************++++++++++++++++++++++++++++++++++++++++++**********************#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################****************++*****************************************##################################################################################%%%%#################################################################################%%%%%%%###############################################################*++*++++++++++++++++**###########******#########*********#####%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%#####################################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++******############################%%%%%%%%%%%%%%%%%%%###############################################%@@@@@@@@@@@@@@@@@@%#############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%####
*****************************************************************************************************************************######################*****************##############******************************************************************************##########################*******************************************+++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*++++++++++++++*********++++++++++++*****************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@#*********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################********************************************************++++++++++++++++++++++++++++++++++++++++++**********************%@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################************+***++++*+*****************************************####################################################################################################################################################################%%%%%%%#############################################################***++++++++++++++++**###########*******####%###***********####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%#####################################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++*****#############################%%%%%%%%%%%%%%%%%%%###############################################%@@@@@@@@@@@@@@@@@@%############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%####
*****************************************************************************************************************************######################****************###############******************************************************************************#########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*++++++++++++++**********+++++++++*******************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@%**********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################*********************************************************+++++++++++++++++++++++++++++++++++++++++*********************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################***************+++++++++++***************************************###################################################################################################################################################################%%%%%%%###########################################################***++++++++++++++**###########*******########*************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%#####################################################********+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++*****##############################%%%%%%%%%%%%%%%%%%################################################@@@@@@@@@@@@@@@@@@@@%##########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************######################****************###############*****************************************************************************##########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*++++++++++++++**********+++++++++*******************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@#*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################*********************************************************+++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################****************+++++++++++******************************************################################################################################################################################################################%%%%%%%########################################################******+++++++++++**###########*******###%####***************####%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%#####################################################**********+++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++*****##############################%%%%%%%%%%%%%%%%%%################################################@@@@@@@@@@@@@@@@@@@@%#########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************######################****************###############*****************************************************************************##########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*++++++++++++++**********+++++++*********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################*********************************************************++++++++++++++++++++++++++++++++++++++++********************#%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################*******************+++++++++++*******++**********************************############################################################################################################################################################%%%%%%%%######################################################******+++++++++**###########******####%%###*****************####%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%#####################################################*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++*****################################%%%%%%%%%%%%%%%%#################################################@@@@@@@@@@@@@@@@@@@@%%########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************#####################*****************###############*****************************************************************************##########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*++++++++++++++**********++++++**********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@#**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################*********************************************************+++++++++++++++++++++++++++++++++++++++++*******************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################******************+++++++++++++++++++++++++********************************##########################################################################################################################################################%%%%%%%%%###################################################*********+++++*#######%###*****#####%%%##*******************#####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%####################################################*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++*****##################################%%%%%%%%%%%%%%##################################################@@@@@@@@@@@@@@@@@@@@%%########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************#####################******************##############****************************************************************************###########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*++++++++++++++**********++**+***********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************%@@@@@@@@@@@@@%@@%***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################********************************************************+++++++++++++++++++++++++++++++++++++++++******************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################*******************++++++++++++++++++++++++++++******************************#########################################################################################################################################################%%%%%%%%%##################################################******+++++**##%########****######%%####******************######%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%####################################################*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++*****#########################*########%%%%%%%%%%%%####################################################@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************#####################******************#############*****************************************************************************###########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*++++++++++++++**********++**+***********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@#***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################*********************************************************++++++++++++++++++++++++++++++++++++++++*****************##%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################********************++++++++++++++++++++++++++++++*****************************########################################################################################################################################################%%%%%%%%%###############################################***********##%%##%#####**#############********************######%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%####################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++*****#########################**##########%%%%%%%%%#####################################################@@@@@@@@@@@@@@@@@@@@@%######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************#####################******************#############*****************************************************************************###########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*+++++++++++++++*********+++++***********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@***********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################********************************************************++++++++++++++++++++++++++++++++++++++++*****************##%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################********************++++++++++++++++++++++++++++++********************************#####################################################################################################################################################%%%%%%%%%#############################################********###%%%%%%####################**********************######%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%####################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++****###########################**########################################################################@@@@@@@@@@@@@@@@@@@@@%######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************####################*******************#############*****************************************************************************###########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*+++++++++++++++*********++++++**********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************#@@@@@@@@@%@@@@@@@#***********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################*******************************************************++++++++++++++++++++++++++++++++++++++++****************###%%%%%%%%%%%%%%%%%%%##%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################*********************++++++++++++++++++++++++++++++***********************************###################################################################################################################################################%%%%%%%%%##########################################******##%%%%%%%%%##################************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%####################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++****############################**########################################################################@@@@@@@@@@@@@@@@@@@@@%######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************************************************************************************************************###################*******************#############****************************************************************************############################*********************************************+++++++++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@%%%*+++++++++++++++********++++++***********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************%@@@@@@@@%%@@@@@@%************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%####%########################################################******************************************************+*++++++++++++++++++++++++++++++++++++++++**************####%@%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################************************+++++++++++++++++++++++++++++++********************************####################################################################################################################################################%%%%%%%%%#######################################*****#%%%%%%%%%%%####%%###########************************#########%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%###################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++***#############################**########################################################################%@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************************************************************************************************************##################********************############*****************************************************************************############################*********************************************+++++++++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@%%%*+++++++++++++++********++++++***********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************#@@@@@@@@@%@@@@@@@%************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################******************************************************++++++++++++++++++++++++++++++++++++++++**************####%@%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################************************++++++++++++++++++++++++++++++***********************************#################################################################################################################################################%%%%%%%%%%####################################**##%%%%%%%%%%%%#################*************************##########%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%###################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#############################*#########################################################################%@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*******************************************************************************************************************************#################********************############*****************************************************************************############################***********#**********************************++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@%%%*++++++++++++++++*******++++++***********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************%@@@@@@@@%@@@@@@@@************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%##############################################################***************************************#######*******++++++++++++++++++++++++++++++++++++++++*************####%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################*************************++++++++++++++++++++++++++++++++++++*******************************################################################################################################################################################%%%%%%%%%%##################################%%%%%%%%%%%%%%###############****************************###########%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%##################################################************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#################################################################################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******########################################################################################################%@@@@@@@@@@@@@@@@@@@@%%###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************************************************************************################********************############*****************************************************************************############################**********##**********************************++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@%%%*++++++++++++++++*******+++++++**********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************#@@@@@@@@@%@@@@@@@#************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%################################################################################*********************************###########***+*++++++++++++++++++++++++++++++++++++++++*************####%@%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################*************************++++++++++++++++++++++++++++++++++++++++****************************################################################################################################################################################%%%%%%%%%%%%############################%%%%%%%%%%%%%%###############*****************************############%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%##################################################************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#############################*##########################################################################%@@@@@@@@@@@@@@@@@@@@%%###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************************************************************************###############*********************###########******************************************************************************############################**********##**********************************++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@%%%*++++++++++++++++*******+++++++++********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************%@@@@@@@@@%@@@@@@@*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################******************************######%#######**+*++++++++++++++++++++++++++++++++++++++++************#####%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################************************++++++++++++++++++++++++++++++++++++++++++**+++***********************################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%#####################************************##############%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%################################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******########################################################################################################%@@@@@@@@@@@@@@@@@@@@@%###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************##############*********************###########******************************************************************************###########################***********##************************************++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@%%%*+++++++++++++++*******+++++++++++*******************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************#@@@@@@@@@%@@@@@@@#*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################***##############################################################**********************####%%%%%#######***++++++++++++++++++++++++++++++++++++++++************####%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++******************##############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%######################************************#################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%################################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##############################*###########################################################################%@@@@@@@@@@@@@@@@@@@@@%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************************************************************############**********************###########******************************************************************************###########################***********##*************************************+++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@%%%*+++++++++++++++*******+++++++++++*******************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%**************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************%@@@@@@@@@%@@@@@@%**************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################*****#####################################################################**#************####%%%%%%%######****++++++++++++++++++++++++++++++++++++++++**********#####%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%##############################*****************####################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%###############################################***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**########################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*##############################*###########################################################################%@@@@@@@@@@@@@@@@@@@@@%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***********************************************************************************************************************************###########**********************###########******************************************************************************###########################***********##*************************************+++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@%%%*+++++++++++++++*******++++++++++++******************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************#@@@@@@@@@%@@@@@@@%*************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################*******############################################################################*********##%%%%%%%%%######****++++++++++++++++++++++++++++++++++++++++**********#####%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################************##########################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%##############################################***************************************++++++++++++++++++++++++++++++++++++++++++++++++*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#########################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*#########################%#%##############################################################################%%@@@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************************************************************########************************#########*******************************************************************************###########################***********##**************************************++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******++++++++++++******************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@**************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################*******###############################################################################*******###%%%%%%%%%%#####***+**++++++++++++++++++++++++++++++++++++*+*********#####%@%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************##############################################################################################################################################%%%%%%%%%%%%%%%%%%%%##############################################**##############################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%#############################################****************************************+++++++++++++++++++++++++++++++++++++++++++**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##########################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########################################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################%###*#############################################################################%@@@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%##################%%%###################%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************************************************************************************************************************************###**************************#########*******************************************************************************###########################**********###**************************************++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******+++++++++++++*****************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@%**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################********#####################################################################################*###%%%%%%%%%%%######**+**++++++++++++++++++++++++++++++++++++++*********#####%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################****************************+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++****************##############################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%############################################****************************************++++++++++++++++++++++++++++++++++++++++++********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########################################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################%%################################################################################%@@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%#################%%%%%##################%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************########********************************************************************************###########################**********###**************************************++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@%%%#+++++++++++++++*******++++++++++++++****************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*********##########################################################################################%%%%%%%%%%%######**+**+*++++++++++++++++++++++++++++++++++++*********####%@%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################**************************+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************###########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%###########################################*****************************************+++++++++++++++++++++++++++++++++++++++*********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################%%################################################################################%%@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%################%%%%%##################%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************########********************************************************************************###########################**********###**************************************+++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@%%%#+++++++++++++++*******++++++++++++++****************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%********************************************************************++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@%***************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################****************###################################################################################%%%%%%%%%%%%######*****+*+*++++++++++++++++++++++++++++++++++********#####%@%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%@%%%%%%@@@@@@@@@@@%%%%%%%##########################################*****************************************+++++++++++++++++++++++++++++++++++++*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################%#%#################################################################################%%%@@@@@@@@@@@@@@@@%%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%##################%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************########********************************************************************************###########################**********###***************************************++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@%%%#+++++++++++++++*******+++++++++++++++***************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*******************#################################################################################%%%%%%%%%%%%%%######******+*++++++++++++++++++++++++++++++++++********#####%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************####################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@@@@%%%%%%%#########################################******************************************+++++++++++++++++++++++++++++++++++*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*############################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############################%#%##################################################################################%%@@@@@@@@@@@@@@@%%%#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%#%%%%%%%%########%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************#######*********************************************************************************###########################**********###***************************************++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@%%%#+++++++++++++++*******+++++++++++++++****************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***********************************************************************+++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@%***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################***++****************#################################################################################%%%%%%%%%%%%%%######******+*++++++++++++++++++++++++++++++++++********####%@%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++***********************################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%########################################******************************************++++++++++++++++++++++++++++++++++*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*############################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############################%%%###################################################################################%%%@@@@@@@@@@@@@%%%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%######%%%%%%%%%%#########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************#######*********************************************************************************##########################***********###***************************************++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******+++++++++++++++****************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************************************************++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@***************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################**+++++****************###############################################################################%%%%%%%%%%%%%%%%#####******+*++++++++++++++++++++++++++++++++++*******#####%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################*************************************++++++++++++++++++++++++++++++++++++++++++++++**************************############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%#######################################*******************************************+++++++++++++++++++++++++++++++**************************************+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#############################%%%%####################################################################################%%%%@@@@@@@@@%%%%%#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************#######*********************************************************************************#########################************###***************************************++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******++++++++++++++++***************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************************************************++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************@@@@@@@@@@@@@@@@@%***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################**+++++++***************###############################################################################%%%%%%%%%%%%%%%%#####******+*++++++++++++++++++++++++++++++++++*******#####%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################*************************************++++++++++++++++++++++++++++++++++++++++++++++***************************#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%######################################********************************************+++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****############################%%%%%#####################################################################################%%%%%%@@@@@%%%%%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######**********************************************************************************#########################************###****************************************+++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******++++++++++++++++***************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************************************************++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################**+++++++++***************#############################################################################%%%%%%%%%%%%%%%%%#####*********+++++++++++++++++++++++++++++++++******#####%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################************************************++++++++++++++++++++++++++++++++++++++++++++++++*****************************####################################################################################################################################################################################################################%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@%@%%%%%%######################################********************************************+++++++++++++++++++++++++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###########################%#%%%%#######################################################################################%%%%%%%%%%%%%%###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######**********************************************************************************#########################***********####*****************************************++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******++++++++++++++++***************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************************************************++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#**************#@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################**+++++++++++**************#############################################################################%%%%%%%%%%%%%%%%%%####**********++++++++++++++++++++++++++++++++******#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################***********************************++++++++++++++++++++++++++++++++++++++++++++++++********************************################################################################################################################################################################################################################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%@%%%%%%#####################################*********************************************++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++******############################%%#%%#########################################################################################%%%%%%%%%%%%####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######***********************************************************************************########################***********#####*****************************************+++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******+++++++++++++++++**************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************************************************++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@***************%%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################**+++++++++++++*************#############################################################################%%%%%%%%%%%%%%%%%%####************++++++++++++++++++++++++++++++******#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++********************************######%%%%%%%##############################################################################################################################################################################################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%@%%%%%%####################################**********************************************++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############################################################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##########################%#%%%%###########################################################################################%%%%%%%%#######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######***********************************************************************************#######################***********######******************************************++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******+++++++++++++++++**************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**************************************************************************++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#**************#@#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################**+++++++++++++++*************############################################################################%%%%%%%%%%%%%%%%%%####****************++++++++++++++++++++++++++*****#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%###########################################################**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************####%%%%%%############################################################################################################################################################################################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####################################**********************************************++++++++++++++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++******############################%%#%%%##########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######***********************************************************************************#######################***********######******************************************++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@%%#++++++++++++++********++++++++++++++++++*************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**************************************************************************++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@**************#@%*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################**+++++++++++++++++************############################################################################%%%%%%%%%%%%%%%%%%%###********************+++++++++++++++++++++++****#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%################################################************************************++++++++++++++++++++++++++++++++++++++++++++++++++***************************************#######%%########################################################################################################################################################################################%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###################################***********************************************+++++++++++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########################################################*+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++*******###########################%#%%%%##########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######************************************************************************************######################***********######*********************************************+++++++++++++++++++++++*%%%@@@@@@@@@@@@@@@%%#++++++++++++++********++++++++++++++++++*************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#**************%@**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################**++++++++++++++++++************############################################################################%%%%%%%%%%%%%%%%%%%###*********************++++++++++++++++++++++****####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************#############################################################################################################################################################################################%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##################################************************************************++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##########################################################*+++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++********########%#################%%%%%%%#########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######************************************************************************************######################***********######***************************************************+++++++*+++++++++*%%%@@@@@@@@@@@@@@@%%#++++++++++++++********++++++++++++++++++*************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************+++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@%**************#@#*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################**++++++++++++++++++++***********############################################################################%%%%%%%%%%%%%%%%%%%%##*********************++++++++++++++++++++******####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************########################################################################################################################################################################################%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##################################************************************************++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#########################################################*+++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++**********#####%%%%################%%%%%%%#########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######*************************************************************************************####################************######****************************************************++++++**++++++++*%%%@@@@@@@@@@@@@@@%%#++++++++++++++********++++++++++++++++++*************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#**************%@**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################***+++++++++++++++++++++**********###########################################################################%%%%%%%%%%%%%%%%%%%%%##**********************+++++++++++++++++++*****#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************#################################################################################################################################################################################%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#################################*************************************************++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######################################################*++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#*+++++++++++++++++++++++++++++++++++++++++++++++++++*******########%%%%###############%%%%%%%##########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************#####***************************************************************************************###################***********#######********************************************************++++++++++++*%%%@@@@@@@@@@@@@@@%%#++++++++++++++********++++++++++++++++++*************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************+++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@**************#@#**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################***++++++++++++++++++++++***********##########################################################################%%%%%%%%%%%%%%%%%%%%%%#**********************++++++++++++++++++++****####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%###############%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************#########################################################################################################################################################################%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%################################**************************************************+++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++######################################################*++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#***+++++++++++++++++++++++++++++++++++++++++++++++++*********##*#####%%%%##############%%%%%%%############################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************#####***************************************************************************************###################***********#######********************************************************++++++++++++*%%%@@@@@@@@@@@@@@@%%#++++++++++++++********++++++++++++++++++*************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#**************%@***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*****++++++++++++++++++++++++**********##########################################################################%%%%%%%%%%%%%%%%%%%%%%#**********************++++++++++++++++++++****####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************##################################################################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%################################**************************************************+++********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####################################################*++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#***++++++++++++++++++++++++++++++++++++++++++++++++********#########%%%%%###############%%%#%#############################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************#####****************************************************************************************##################***********#######********************************************************++++++++++++*%%%@@@@@@@@@@@@@@@%%#++++++++++++++********+++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************+#@@@@@@@@@@@@@@@@@**************#@#*##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*******+++++++++++++++++++++++++**********##########################################################################%%%%%%%%%%%%%%%%%%%%%%#*********************+++++++++++++++++++*+****###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************++++++++*********##########################################################################################################################################################%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%##############################*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###################################################*+++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**################################################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#***+++++++++++++++++++++++++++++++++++++++++++++++********##########%%%%%#############%%%%%%%#############################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************#####*****************************************************************************************#################***********#######********************************************************++++++++++++*%%@@@@@@@@@@@@@@@@%%#++++++++++++++********+++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************+++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#**************%@*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################********++++++++++++++++++++++++++*********##########################################################################%%%%%%%%%%%%%%%%%%%%%%#********************++++++++++++++++++++******###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++++++++++++++*********###################################################################################################################################################%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%##############################*****************************************************####************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################*++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#################################################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#***+++++++++++++++++++++++++++++++++++++++++++++**********#########%%%%%%#############%%%#%%##*###########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************####********************#####******************************************************************************************################***********#######********************************************************++++++++++++*%%@@@@@@@@@@@@@@@@%%#++++++++++++++********+++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@**************#@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*********+++++++++++++++++++++++++++**********#########################################################################%%%%%%%%%%@@%%%%%%%%%%#********************++++++++++++++++++++******###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++********##############################################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%##############################************************************************###########********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*################################################*+++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***++++++++++++++++++++++++++++++++++++++++++++***********#########%%%%%%############%%%%%%%##############################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************************************************************************************************************************#########******************#####*******************************************************************************************##############************#######********************************************************++++++++++++*%%@@@@@@@@@@@@@@@@%%#++++++++++++++********+++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************+++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@#**************%@*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################**********++++++++++++++++++++++++++++*********#########################################################################%%%%%%%%%@@@@%%%%%%%%%#*********************++++++++++++++++***+*****##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++++**********########################################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%##############################********************************************###############*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################################*++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++***********#########%%%%%%%%#########%#%%#%%################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************************###########*****************#####********************************************************************************************#############************#######********************************************************++++++++++++*%%@@@@@@@@@@@@@@@@%%#++++++++++++++********+++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************************************************+++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@%**************#@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*************+++++++++++++++++++++++++++++*********#########################################################################%%%%%%%%%@@@@@%%%%%%%%#**********************+++++++++++++*********#*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++********###################################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%#############################********************************###***####################*#*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############################################*+++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++***********##########%%%%%%%%#########%#%%%%%################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************************************************************************************************************************************#############****************#####**********************************************************************************************###########************#######********************************************************++++++++++++*%%@@@@@@@@@@@@@@@@%%#++++++++++++++********++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************************************************+++++++++++++++++++++++++++++********************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@#**************%@#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***************+++++++++++++++++++++++++++++*********#########################################################################%%%%%%%%%@@@@@%%%%%%%%#**********************+++++++++++++*********#*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++********###############################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%############################*******************************###############################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########################################*++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++************##########%%%%%%%%########%%%#%%%#######################%%########################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***************************************************************************************************************************************###############****************####***********************************************************************************************##########************#######*******************************************************+++++++++++++#%%@@@@@@@@@@@@@@@@@%#+++++++++++++*********++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************************++++++++++++++++++++++***************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@**************%@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*****************++++++++++++++++++++++++++++++********##########################################################################%%%%%%%@@@@@@@@%%%%%%#************************++++++++*************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++******###########################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#############################***************************##################################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########################################*+++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***++++++++++++++++++++++++++++++++++++++++************##########%%%%%%%%%########%%##%%##*###################%%%%%%#######################################################################################################################################################%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***************************************************************************************************************************************###############****************####************************************************************************************************#########***********########*******************************************************+++++++++++++#%%@@@@@@@@@@@@@@@@@%#+++++++++++++*********++++++++++++++++++++***********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************************++++++++++++++++++++++**************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@#*************#@@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*****************+++++++++++++++++++++++++++++++*******##########################################################################%%%%%%%@@@@@@@@%%%%%%##***********************++++++***+***+*******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#######################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#############################***************************#################################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######################################*+++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++++++++++*************##########%%%%%%%%%#######%%#%%%######################%%%%%%%%%#################################################################################################################################################%##%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************#################***************###**************************************************************************************************########***********########********************************************************+++++++++++*#%%@@@@@@@@@@@@@@@@@%#*++++++++++++*********++++++++++++++++++++***********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************************++++++++++++++++++++++**************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@%**************%@@#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*****************++++++++++++++++++++++++++++++++*******#########################################################################%%%%%%%@@@@@@@@%%%%%%##*************************++*****++**+******##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%#############################************************###################################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####################################*++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***++++++++++++++++++++++++++++++++++++++*************##########%%%%%%%%%%######%%%%%%##*###################%%%%%%%%%%%################################################################################################################################################%#%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%########%%%%%%####%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************##################**************###***************************************************************************************************######************########*********************************************************++++++++++*#%%@@@@@@@@@@@@@@@@@%#*++++++++++++*********++++++++++++++++++++***********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************************+++++++++++++++++++****************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@%*************#@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############****************+++++++++++++++++++++++++++++++++*******#########################################################################%%%%%%%%@@@@@@@%%%%%%##*******************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##############################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%#############################*******************######################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##################################*+++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++++++++*************###########%%%%%%%%%%#####%%##%%######################%%%%%%%%%%%%##################################################################################################################################################%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#####%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************##################**************##*****************************************************************************************************##*##************########**********************************************************+++++++++*#%%@@@@@@@@@@@@@@@@@%#*++++++++++++*********++++++++++++++++++++***********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************************+++++++++++++++++++****************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@**************%@@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*****************++++++++++++++++++++++++++++++++++******#########################################################################%%%%%%%%@@@@@@@@%%%%%##**************************+******+********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#########################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##############################****************#######################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################*++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***++++++++++++++++++++++++++++++++++++*************############%%%%%%%%%%######%%%%##*####################%%%%%%%%%%%%%################################################################################################################################################%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************************************************************###################**************##**********************************************************************************************************************########**********************************************************+++++++++*#%%@@@@@@@@@@@@@@@@@%#*++++++++++++**********+++++++++++++++++++***********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************************+++++++++++++++++++****************************************************************************************************************************************************************************************@@@@@@@@@@@@@@@@%+************#@@@#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*#****************+++++++++++++++++++++++++++++++++++******#########################################################################%%%%%%%%@@@@@@@@%%%%%##****************************************#*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##################################################################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###############################***************#####################################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############################**++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++++++*************############%%%%%%%%%%%###%%##%%#######################%%%%%%%%%%%%%%###############################################################################################################################################%%@%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************************************************************###################**************##**********************************************************************************************************************########***********************************************************++++++++*#%%@@@@@@@@@@@@@@@@@%#*++++++++++++**********+++++++++++++++++++************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************************+++++++++++++++++++***************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@*+************%@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*#****************++++++++++++++++++++++++++++++++++++*****##########################################################################%%%%%%%@@@@@@@@%%%%%##****************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#***##########################################################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###################################********#######################################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########################*+++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++++**************#############%%%%%%%%%%%###%%#%%##*#####################%%%%%%%%%%%%%%##############################################################################################################################################%%@@%%##############################%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************************************************************###################**************##**********************************************************************************************************************########************************************************************+++++++*#%%@@@@@@@@@@@@@@@@@%#*++++++++++++**********+++++++++++++++++++************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************+++++++++++++++++++***************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@%+*************@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########****************++++++++++++++++++++++++++++++++++++*****##########################################################################%%%%%%%@@@@@@@@%%%%%##**************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********########################################################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####################################****########################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#########################*++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++++**************#############%%%%%%%%%%%##%##%%##*######################%%%%%%%%%%%%%%#############################################################################################################################################%%@@@%%##############################%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************************************************************###################**************************************************************************************************************************************########**************************************************************+++++*#%@@@@@@@@@@@@@@@@@@%%*++++++++++++**********+++++++++++++++++++************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************+++++++++++++++++****************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@**************%@@@*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*****************++++++++++++++++++++++++++++++++++++*****##########################################################################%%%%%%@@@@@@@@@@%%%%###*************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##############################################################################********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######################*+++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++****************#############%%%%%%%%%%%#%%#%%##*#######################%%%%%%%%%%%%%%#############################################################################################################################################%@@@@@%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************************************************************###################**************************************************************************************************************************************########***************************************************************+++**#%@@@@@@@@@@@@@@@@@@%%*++++++++++++**********++++++++++++++++++*************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************+++++++++++++++++****************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@%**************@@@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########****************++++++++++++++++++++++++++++++++++++++*****#########################################################################%%%%%%@@@@@@@@@@%%%%###************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************##############################################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###################################*########################################**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################*+++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++***************#############%%%%%%%%%%%%%##%%##**#######################%%%%%%%%%%%%%%############################################################################################################################################%@@@@@@%#%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************##################**************************************************************************************************************************************########****************************************************************++**#%@@@@@@@@@@@@@@@@@@%%*++++++++++++**********++++++++++++++++++*************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************+++++++++++++++++***************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@#+************%@@@*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########****************+++++++++++++++++++++++++++++++++++++++****#########################################################################%%%%%%@@@@@@@@@@%%%%###************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#**############################################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##########################################################################*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######################################################################################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***++++++++++++++++++++++++++++++***************##############%%%%%%%%%%%%##%%##**########################%%%%%%%%%%%%%%%###################################################################################################################%%%%%%%%%%%%%%%%#######%%@@@@@@%#%%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************##################**************************************************************************************************************************************########********************************************************************#%@@@@@@@@@@@@@@@@@@%%*++++++++++++**********+++++++++++++++++++************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************+++++++++++++++*****************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@%**************@@@%*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***************+++++++++++++++++++++++++++++++++++++++++***#########################################################################%%%%%%%@@@@@@@@@@%%%#####*********************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#########################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%########################################################################****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########################################################################################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++***************###############%%%%%%%%%%%%#%%##*#########################%%%%%%%%%%%%%%%%#################################################################################################################%%%%%%%%%%%%%%%%%%%%####%%@@@@@@@%%#%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************##################**************************************************************************************************************************************########********************************************************************%%@@@@@@@@@@@@@@@@@@%%*++++++++++++**********+++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************++++++++++++++***********************************************************************************************##****************************************************************************************#@@@@@@@@@@@@@@@@*************+%@@@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***************+++++++++++++++++++++++++++++++++++++++++***#########################################################################%%%%%%%@@@@@@@@@@%%%######*******************************##%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************####################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%######################################################################*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++***************################%%%%%%%%%%%%####**#**######################%%%%%%%%%%%%%%%%###############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%##%%@@@@@@@@%################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************###################**************************************************************************************************************************************#######********************************************************************%%%@@@@@@@@@@@@@@@@@%%#++++++++++++**********+++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************++++++++++++++***********************************************************************************************##****************************************************************************************%@@@@@@@@@@@@@@%#**************@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***************+++++++++++++++++++++++++++++++++++++++++***##########################################################################%%%%%%@@@@@@@@@@%%%######******************************###%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################**************************************++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************##################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####################################################################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++****************###############%%%%%%%%@%%%%###*****#######################%%%%%%%%%%%%%%%%##############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%####%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************###################**************************************************************************************************************************************#######*******************************************************************#%%%@@@@@@@@@@@@@@@@@%%#++*+++++++++**********++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************+++++++++++++***********************************************************************************************###****************************************************************************************%@@@@@@@@@@@@@@#**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++++++++++++++++++++++++++++++++***##########################################################################%%%%%%@@@@@@@@@@%%%#########**************************###%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################**************************************+++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++**********************############################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##################################################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++***************#################%%%%%%%%@%%%###****#########################%%%%%%%%%%%%%%%%############################################################################################################%%%%%%%%%@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@%%#%#%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***************************************************************************************************************************************##################**************************************************************************************************************************************######********************************************************************#%%%@@@@@@@@@@@@@@@@@%%#++*+++++++++**********+++++++++++++++++++++**********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******************************************************************************++++++++++++***********************************************************************************************####**************************************************************************************#@@@@@@@@@@@@@@%***************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++++++++++++++++++++++++++++++++*****########################################################################%%%%%%@@@@@@@@@@%%%#########**************************##%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################****************************************++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+*********************#########################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%################################################################*****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++***************##################%%%%%%%@%%%%##****##*#######################%%%%%%%%%%%%%%%%###########################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%#%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************************************************************************************************************************************################****************************************************************************************************************************************####*********************************************************************#%%@@@@@@@@@@@@@@@@@@%%#++++++++++++**********+++++++++++++++++++++**********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******************************************************************************++++++++++************************************************************************************************#####**************************************************************************************%@@@@@@@@@@@@@@***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*************++++++++++++++++++++++++++++++++++++++++++*****########################################################################%%%%%%%@@@@@@@@%%%%##########************************##%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################********************************************+++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************####################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###############################################################********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++***************##################%%%%%%%%@%%%%#*****##########################%%%%%%%%%%%%%%%%##########################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%##########################%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************************************************************************************************************************************################******************************************************************************************************************************************##*********************************************************************#%%@@@@@@@@@@@@@@@@@@%%#++++++++++++**********++++++++++++++++++++++*********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#******************************************************************************++++++++++************************************************************************************************#####*************************************************************************************#@@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%@@%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++++++++++++++++++++++++++++++++*****#########################################################################%%%%%%@@@@@@@@%%%%###########**********************##%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################*********************************************+++*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************#################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##############################################################**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++***************###################%%%%%%%%%%%%##*****##########################%%%%%%%%%%%%%%%%#########################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************************************************************************************************************************************################*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#++++++++++++**********+++++++++++++++++++++++********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*******************************************************************************+++++++++************************************************************************************************#####*************************************************************************************%@@@@@@@@@@@@@@***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++++++++++++++++++++++++++++++++******########################################################################%%%%%%%@@@@@@@%%%%###########**********************#%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################*******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************###############################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###########################################################***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++***************####################%%%%%@%%%%%%#*****###########################%%%%%%%%%%%%%%%%########################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#######################%%%%#%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************************###############*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#++++++++++++**********++++++++++++++++++++++++*******************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*********************************************************************************++++++**************************************************************************************************#####************************************************************************************#%@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++++++++++++++++++++++++++++++++******########################################################################%%%%%%%@@@@@@@@%%%############********************#%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################**********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+************************#############################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%###########################################################*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++***************#####################%%%%@@%%%%%%#*****###########################%%%%%%%%%%%%%%%%#######################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%####################%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*******************************************************************************************************************************************#############*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#++++++++++++**********+++++++++++++++++++++++++*******************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************************************************************************************************************************#####************************************************************************************%@@@@@@@@@@@@@%***************#@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++++++++++++++++++++++++++++++++*******########################################################################%%%%%%@@@@@@@@%%%##############*****************##%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################*********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************########################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%###########################################################******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++**************######################%%%%%%%%%%%%%#*****###########################%%%%%%%%%%%%%%%%######################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%##################%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************************************************************************************###########******************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+*++++++***********++++++++++++++++++++++++++******************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************************************************************************************************************************######***********************************************************************************%@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++++++++++++++++++++++++++++++++********#######################################################################%%%%%%@@@@@@@@%%%################***********#***#%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################*********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************#######################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%###########################################################********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++*************########################%%%%%%%%%%%%%#*****###########################%%%%%%%%%%%%%%%%######################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%##################%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************##########******************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+*++++++***********++++++++++++++++++++++++++******************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************************************************************************************************************************######**********************************************************************************#@@@@@@@@@@@@@%***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########***************++++++++++++++++++++++++++++++++++++++++++********########################################################################%%%%%%@@@@@@@%%%#####################*****##**#%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################*********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************#################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##########################################################**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++**************#########################%%%%%%%%%%%%%##***############################%%%%%%%%%%%%%%%%%####################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************************************************************************#########********************************************************************************************************************************************#*********************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+*++++++***********+++++++++++++++++++++++++++*****************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************************************************************************************************************************######**********************************************************************************%@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%@@@@@%@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########***************++++++++++++++++++++++++++++++++++++++++++*********#######################################################################%%%%%%@@@@@@@%%%###########################**##%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************###########################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#########################################################***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++*************#########################%%%%%%%%%%%%%%###**############################%%%%%%%%%%%%%%%%%####################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************************************************************************##########*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+*+++++++**********+++++++++++++++++++++++++++++***************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************************************************************************************************************************######*********************************************************************************#@@@@@@@@@@@@@%****************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**************+++++++++++++++++++++++++++++++++++++++++++*********########################################################################%%%%%@@@@@@%%%%#########################*#*##%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################*********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************######################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#######################################################**************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++**************##########################%%%%%%%%%%%%%##**##############################%%%%%%%%%%%%%%%%%###################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************************************************************************##########*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+*++++++***********++++++++++++++++++++++++++++++**************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************************************************************************************************************######*********************************************************************************%@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**************+++++++++++++++++++++++++++++++++++++++++++**********#######################################################################%%%%%%@@@@@%%%%##########################*##%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************##################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###%%%################################################***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++**************###########################%%%%%%%%%%%%%##**##############################%%%%%%%%%%%%%%%%%##################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************************************************************************************############*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+*++++++***********+++++++++++++++++++++++++++++++*************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************************************************************************************************************######********************************************************************************#@@@@@@@@@@@@@%****************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*************++++++++++++++++++++++++++++++++++++++++++++**********########################################################################%%%%%@@@@@%%%%##########################*##%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************###############%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%#################################################***************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++***************############################%%%%%%%%%%%%%##*###############################%%%%%%%%%%%%%%%%%##################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************************************************************************************************************************##############*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+*++***************++++++++++++++++++++++++++++++++++**********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************************************************************************************************************######********************************************************************************%@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*************++++++++++++++++++++++++++++++++++++++++++++***********########################################################################%%%%@@@@@%%%%############################%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################*********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************#############%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#################################################****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++**************###############################%%%%%%%%%%%%#*################################%%%%%%%%%%%%%%%%%#################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************************###############*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+******************+++++++++++++++++++++++++++++++++++*********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************************************************************************************************************######*******************************************************************************#@@@@@@@@@@@@@%***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**************++++++++++++++++++++++++++++++++++++++++++++***********########################################################################%%%%%@@@@%%%%############################%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************############%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##################################################*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++**************###############################*#%%%%%%%%%%%%#*################################%%%%%%%%%%%%%%%%%#################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************************************************************###################*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+******************+++++++++++++++++++++++++++++++++++*********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************************************************************************************************************######*******************************************************************************%@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*************++++++++++++++++++++++++++++++++++++++++++++************#########################################################################%%%%@@@@%%%%###########################%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************###########%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#################################################*#*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++**************###############################**#%%%%%%%%%%%%#*################################%%%%%%%%%%%%%%%%%###########################################################################################%#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
************************************************************************************************************************************####################*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#*******+**************+++++++++++++++++++++++++++++++++++**********************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*******************************************************************************************************++********************************************************************************######******************************************************************************#@@@@@@@@@@@@@%***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*************++++++++++++++++++++++++++++++++++++++++++++*************#########################################################################%%%%%%@%%%%###########################%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################*****************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************##########%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%####################################################*##*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++**************###############################***#%%%%%%%%%%%%%#*################################%%%%%%%%%%%%%%%%%###########################################################################################%####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***********************************************************************************************************************************#####################*******************************************************************************************************************************************#*********************************************************************#%%@@@@@@@@@@@@@@@@@@%%#*******+++************++++++++++++++++++++++++++++++++++++*********************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%******************************************************************************************++++****+++++++++++++***************************************************************************######******************************************************************************%@@@@@@@@@@@@@****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*************++++++++++++++++++++++++++++++++++++++++++++*************##########################################################################%%%%%%%%%###########################%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************########%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%####################################################*##*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++***************###############################****#%%%%%%%%%%%%##*###############################%%%%%%%%%%%%%%%%%%###########################################################################################%##%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***********************************************************************************************************************************#####################*******************************************************************************************************************************************#*********************************************************************#%%@@@@@@@@@@@@@@@@@@%%#********+++***********+++++++++++++++++++++++++++++++++++++********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************************+**++++++++++++++++++++++************************************************************************######*****************************************************************************#@@@@@@@@@@@@@#***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*************++++++++++++++++++++++++++++++++++++++++++++*************###########################################################################%%%%@%%%##########################%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################*************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++******************#####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#######################################################*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++**************###############################******#%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%############################################################################################%##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%###%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***********************************************************************************************************************************#####################*******************************************************************************************************************************************#*********************************************************************#%%@@@@@@@@@@@@@@@@@@%%#*********+************++++++++++++++++++++++++++++++++++++++*******************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************************+++++++++++++++++++++++++++++++++++++*************************************************************######*****************************************************************************%@@@@@@@@@@@@@****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**************++++++++++++++++++++++++++++++++++++++++++++**************##########################################################################%%%%%%%%##########################%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************###%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#######################################################********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++*+**************##############################********#%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%############################################################################################%##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************************************************************######################*****************************************************************************************************************************************************************************************************************#%@@@@@@@@@@@@@@@@@@@%%#**********************+++++++++++++++++++++++++++++++++++++++******************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************************++++++++++++++++++++++++++++++++++++++++++*************************++++****************************######****************************************************************************#@@@@@@@@@@@@@#******#********#@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**************++++++++++++++++++++++++++++++++++++++++++++**************###########################################################################%%%%%%%%########################%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#####%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%#######################################################********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************###############################*********#%%%%@@@@%%%%###################################%%%%%%%%%%%%%%%%%###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************************************************************######################*****************************************************************************************************************************************************************************************************************#%@@@@@@@@@@@@@@@@@@@%%#*********+************+++++++++++++++++++++++++++++++++++++++++****************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++**********************######****************************************************************************@@@@@@@@@@@@@@******##********%@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************+++++++++++++++++++++++++++++++++++++++++++++***************###########################################################################%%%%%%%#######################%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#####%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%########################################################*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************################################**********##%%%%@@@@%%%%###################################%%%%%%%%%%%%%%%%%###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************######################******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@%%#****+***++************++++++++++++++++++++++++++++++++++++++++++***************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************######***************************************************************************#@@@@@@@@@@@@@%****#%#********#@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**************+++++++++++++++++++++++++++++++++++++++++++++****************###########################################################################%%%%%%#######################%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++**********###%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%########################################################********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#*##*****#################################************#%%%%%@@@@%%%%###################################%%%%%%%%%%%%%%%%%###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************######################******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@@%#****++*++++***********+++++++++++++++++++++++++++++++++++++++++++**********************+***#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************######***************************************************************************%@@@@@@@@@@@@@#***%%**********%@@@@@@@@@@@@@@@@%*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************++++++++++++++++++++++++++++++++++++++++++++++****************#############################################################################%%%%######################%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++***+++**###%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%########################################################**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++******************#******##################################*************#%%%%@@@@@%%%###################################%%%%%%%%%%%%%%%%%%#############################################################################################%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************************************************************************#######################******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@@%#****++*+++************++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************######**************************************************************************%@@@@@@@@@@@@@%***%#**********#@@@@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************++++++++++++++++++++++++++++++++++++++++++++++*****************#############################################################################%%%######################@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################**************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%########################################################**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%############################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++******************#*##*#***###################################***************#%%%%@@@@@%%%###################################%%%%%%%%%%%%%%%%%%#############################################################################################%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************************************************************************######################*******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@@%#****++****************+++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************######**************************************************************************@@@@@@@@@@@@@@%**%#***********%@@@@@@@@@@@@@@@@%*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************+++++++++++++++++++++++++++++++++++++++++++++++******************##############################################################################%#############%#######%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%########################################################***********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%############################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************##*######################################****************#%%%@@@@@@%%%###################################%%%%%%%%%%%%%%%%%%#############################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*******************************************************************************************************************************#######################*******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@%%#**+*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************######*************************************************************************%@@@@@@@@@@@@@@**%#***********#@@@@@@@@@@@@@@@@@#*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************+++++++++++++++++++++++++++++++++++++++++++++++******************############################################################################################%%####%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%#########################################################************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************###########################################*****************#%%%@@@@@@%%%###################################%%%%%%%%%%%%%%%%%%###########################################################################################%#%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%##%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************************************************************************************************************########################*******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@%%#**+*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************######************************************************************************#@@@@@@@@@@@@@@%**#************%@@@@@@@@@@@@@@@@%**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*************+++++++++++++++++++++++++++++++++++++++++++++++*******************########################################################################################%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%#########################################################*************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************##############################################*************##%%@@@@@@@%%%###################################%%%%%%%%%%%%%%%%%%###########################################################################################%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************************************************************************************########******************************########################*******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@%%#**+*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************######************************************************************************@@@@@@@@@@@@@@@#**************#@@@@@@@@@@@@@@@@@#**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**************+++++++++++++++++++++++++++++++++++++++++++++++********************#####################################################################################%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%#########################################################**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************########################################################***#**#%%%@@@@@@@%%%###################################%%%%%%%%%%%%%%%%%%##########################################################################################%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************#########*******************************########################*******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@%%#**+********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************######***********************************************************************%@@@@@@@@@@@@@@%***************%@@@@@@@@@@@@@@@@%***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**************++++++++++++++++++++++++++++++++++++++++++++++++*******************####################################################################################%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################*********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%#########################################################***************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************###############################################################%%%@@@@@@@%%%###################################%%%%%%%%%%%%%%%%%%##########################################################################################%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
************************************************************************************###########******************************########################*******************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@@%%#**+********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************######**********************************************************************#@@@@@@@@@@@@@@@%**************#@@@@@@@@@@@@@@@@@#***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**************+++++++++++++++++++++++++++++++++++++++++++++++++********************##################################################################################%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################*******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%########################################################******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*********************************################################################################%%@@@@@@@@%%####################################%%%%%%%%%%%%%%%%%%%#########################################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
************************************************************************************############*****************************#######################********************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@@%%#**+********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************######**********************************************************************%@@@@@@@@@@@@@@@#**************%@@@@@@@@@@@@@@@@%***#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***************+++++++++++++++++++++++++++++++++++++++++++++++++********************#################################################################################%%%%%%##%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################*********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%######################################################*********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#**#**************************####################################################################%%@@@@@@@@%%####################################%%%%%%%%%%%%%%%%%%%#########################################################################################%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***********************************************************************************#############*****************************#######################***********************************************************************************************************************************************##*******************************************************************#%%@@@@@@@@@@@@@@@@@@@%%#**+********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%**************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************######*********************************************************************#@@@@@@@@@@@@@@@%***************@@@@@@@@@@@@@@@@@#***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%########**************++++++++++++++++++++++++++++++++++++++++++++++++++*********************###############################################################################%%%%%%%##%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%#####################################################*************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#**##*#**********************######################################################################%%@@@@@@@%%%####################################%%%%%%%%%%%%%%%%%%%%########################################################################################%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************#**************************************************#############*****************************######################***********************************************************************************************************************************************###*******************************************************************#%%@@@@@@@@@@@@@@@@@@@%%#**+********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%***************************************************************************************************++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++*************######*********************************************************************%@@@@@@@@@@@@@@@%**************%@@@@@@@@@@@@@@@@%****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***************++++++++++++++++++++++++++++++++++++++++++++++++++**********************#############################################################################%%%%%%%%#%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%#####################################################***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%###############**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#**#**#*********************#######################################################################%%@@@@@@@%%%####################################%%%%%%%%%%%%%%%%%%%%########################################################################################%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************###############***************************#######################***********************************************************************************************************************************************###*******************************************************************#%%@@@@@@@@@@@@@@@@@@@%%%**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************************+++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++************######********************************************************************#@@@@@@@@@@@@@@@@#**************%@@@@@@@@@@@@@@@@*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%########***************+++++++++++++++++++++++++++++++++++++++++++++++++++*********************############################################################################%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%######################################################****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#####%%%#%%################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############***##*************####################################################################%%@@@@@@@@%%%####################################%%%%%%%%%%%%%%%%%%%%#####################################################################%%%##################%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************###############***************************#######################***********************************************************************************************************************************************###*******************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************************++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++************######********************************************************************%@@@@@@@@@@@@@@@%**************#@@@@@@@@@@@@@@@@%*****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%########***************+++++++++++++++++++++++++++++++++++++++++++++++++++**********************##########################################################################%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%###################################################*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%#%%#################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############************#####*###################################################################%%@@@@@@@@%%%####################################%%%%%%%%%%%%%%%%%%%%%###################################################################%%%%##################%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
************************************************************************************#############***************************######################************************************************************************************************************************************************###*******************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***************************************************************************************************++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++************######*******************************************************************#@@@@@@@@@@@@@@@@#**************%@@@@@@@@@@@@@@@@#*****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#######****************+++++++++++++++++++++++++++++++++++++++++++++++++++**********************##########################################################################%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################******************************************************************++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%##################################################*************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%#%%#################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*################********#*##########################################################################%%@@@@@@@@%%%####################################%%%%%%%%%%%%%%%%%%%%%%##################################################################%%%%%%%#############%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************#############**************************######################************************************************************************************************************************************************####******************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***************************************************************************************************+++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++*************######*******************************************************************%@@@@@@@@@@@@@@@@**************#@@@@@@@@@@@@@@@@%******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%########****************++++++++++++++++++++++++++++++++++++++++++++++++++++**********************########################################################################%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################******************************************************************++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%#******##########################################******************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++****++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#%%#################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################********#****#####################################################################%%@@@@@@@@@%%#####################################%%%%%%%%%%%%%%%%%%%%%%##################################################################%%%%%%%%############%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************#############*************************#######################***********************************************************************************************************************************************#####******************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%***************************************************************************************************++++++++++++*******###*******++++++++++++++++++++++++++++++++++++++++++++++++*************######******************************************************************#@@@@@@@@@@@@@@@@%**************%@@@@@@@@@@@@@@@@#*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%########****************+++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#######################################################################%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################*****************************************************************++++*****+++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%#**********#####################################*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%##################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################****************##############################################%%%%%###%%%#######%%@@@@@@@@@%%#####################################%%%%%%%%%%%%%%%%%%%%%%%################################################################%%%%%%%%%############%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************#############*************************#######################***********************************************************************************************************************************************#####******************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%***************************************************************************************************+++++++++++******#######******+++++++++++++++++++++++++++++++++++++++++++++++*************######******************************************************************%@@@@@@@@@@@@@@@@#*************#@@@@@@@@@@@@@@@@%******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%########****************+++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#####################################################################%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################****************************************************************++******+++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%#*****+*******##################################*****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++*************+*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#%%##############*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################***********************####################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%###########%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************#############*************************#######################***********************************************************************************************************************************************#####******************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%**************************************************************************************************+++++++++++******#########*****+++++++++++++++++++++++++++++++++++++++++++++++*************######*****************************************************************#@@@@@@@@@@@@@@@@%**************%@@@@@@@@@@@@@@@@#******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%########****************++++++++++++++++++++++++++++++++++++++++++++++++++++++************************###################################################################%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################***********************************************************************++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%###****++++*******#############################***************************************************************************************************************************************************+++++++++++++++++++++++++++++++*************+++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#%%%#############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###################*************************################################%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%%%%########%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************#############*************************#######################***********************************************************************************************************************************************#####******************************************************************#%@@@@@@@@@@@@@@@@@@@@@%%***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++***********************************************************************************************+++++++++++*****##########*****+++++++++++++++++++++++++++++++++++++++++++++++*************######*****************************************************************%@@@@@@@@@@@@@@@@%**************@@@@@@@@@@@@@@@@%*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%########****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++************************##################################################################%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################***********************************************************************++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%##**####**+++++******###########################*******************************************************************************************************************************************************++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#%%%#############**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##################**********************##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%%########%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************##############***********************#######################***********************************************************************************************************************************************#######*****************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*+***********************************************************************************************++++++++++++*****###########*****+++++++++++++++++++++++++++++++++++++++++++++**************######****************************************************************#@@@@@@@@@@@@@@@@@#*************%@@@@@@@@@@@@@@@@#*******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#######*****************+++++++++++++*+++++++++++++++++++++++++++++++++++++++++************************#################################################################%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%#**++***###***++++*****#######################**********************************************************************************************************************************************************+++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*##################***********##*******################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%%%%%%%%%%%%%########%%##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************##############***********************#######################***********************************************************************************************************************************************#######*****************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++*+*********************************************************************************************++++++++++++*****###########*****+++++++++++++++++++++++++++++++++++++++++++++**************######****************************************************************%@@@@@@@@@@@@@@@@@*************#@@@@@@@@@@@@@@@@%********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%########*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************################################################################%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%#**+++++****##****+++****#####################***************************************************************************************************************************************************************++++++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################**********###****################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%%%%%%%%%%%%%%%%#####%%##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
************************************************************************************##############################*****#*########################***********************************************************************************************************************************************#######*****************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++*+*******************************************************************************************++++++++++++*****###########*****++++++++++++++++++++++++++++++++++++++++++++***************######***************************************************************#@@@@@@@@@@@@@@@@@%*************%@@@@@@@@@@@@@@@@*********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%########*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************###############################################################%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%#**+++++++++**###***+++*****#################***************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################********####****#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%%%%%%%%%%%%%%%%%%%##%%##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************################################################################***********************************************************************************************************************************************#######*****************************************************************%%%@@@@@@@@@@@@@@@@@@@@%%**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++******************************************************************************************++++++++++++*****##########******++++++++++++++++++++++++++++++++++++++++++++**************#######***************************************************************%@@@@@@@@@@@@@@@@@#*************@@@@@@@@@@@@@@@@%********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%########******************++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#############################################################%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################**************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%#**++++++++++++**###***+++***################***************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################******#####***#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%%%%%%%%%%%%%%%%%%%%%%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*******************************************************************************##################################################################***********************************************************************************************************************************************#######*****************************************************************%%%@@@@@@@@@@@@@@@@@@@@%%**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++++++++****************************************************************************************+++++++++++++*****##########******+++++++++++++++++++++++++++++++++++++++++++***************#######**************************************************************#@@@@@@@@@@@@@@@@@%*************#@@@@@@@@@@@@@@@@*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######********************++**********++++++++++++++++++++++++++++++++++++++++++++++++++******************############################################################%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%#**+++++++++++++++**##****++***##############***************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################******######**############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%%%%%%%%%%%%%%%%%%%%%%%#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************#######################################################################***********************************************************************************************************************************************#######*****************************************************************%%%@@@@@@@@@@@@@@@@@@@@%%**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++++++++****************************************************************************************++++++++++++++*****#########*****+++++++++++++++++++++++++++++++++++++++++++****************#######**************************************************************%@@@@@@@@@@@@@@@@@%*************%@@@@@@@@@@@@@@@%*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######********************************+++++++++++++++++++++++++++++++++++++++++++++++++++*++***************##########################################################%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++**######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%#**+++++++++++++++++***##***++***############*****************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################******##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%%%%%%%%%%%%%%%%%%%%%%%#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************########################################################################***********************************************************************************************************************************************#######*****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++++++++++**************************************************************************************++++++++++++++******#######******++++++++++++++++++++++++++++++++++++++++++*****************#######*************************************************************#%@@@@@@@@@@@@@@@@@#************#@@@@@@@@@@@@@@@@**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######************************************+++++++++++++++++++++++++++++++++++++++++++++++*++****************########################################################%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++*#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##**+++++++++++++++++++**##*******###########***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################******##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***********************************************************************##########################################################################**********************************************************************************************************************************************#########****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*+++++++++++*************************************************************************************++++++++++++++******######*******++++++++++++++++++++++++++++++++++++++++*******************#######*************************************************************#@@@@@@@@@@@@@@@@@%*************%@@@@@@@@@@@@@@@%**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######************************************++++++++++++++++++++++++++++++++++++++++++++++******+*************#######################################################%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++*#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##**+++++++++++++++++++++**####******#########****************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################*****################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************#############################################################################******************************************************************************************************************************#########################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*++*+++++++*************************************************************************************++++++++++++++++******####*******++++++++++++++++++++++++++++++++++++++++*********************######*************************************************************@@@@@@@@@@@@@@@@@@%************#@@@@@@@@@@@@@@@@***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######***************************************++++++++++++++++++++++++++++++++++++++++++++++++++**************##################################################%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%###############################################################*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++*#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##**+++++++++++++++++++++++***####*****######**********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++***####################****##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%#################################%%%%%%%%%%%%%%%%%##%%%%%%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%#%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************************************************##############################################################################*******************************************************************************************************************************#########################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*++*++++++++************************************************************************************++++++++++++++++*******###*******++++++++++++++++++++++++++++++++++++++***********************######************************************************************#@@@@@@@@@@@@@@@@@@#************%@@@@@@@@@@@@@@@%***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######****************************************+++++++++++++++++++++++++++++++++++++++++++++++*****************###############################################%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################******************************************************************************************++++++++++++++++++++++++++++++++++++++++++*#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##**++++++++++++++++++++++++++**#######*#*#####***********************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******####################***##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%################################%%%%%%%%%%%%%%#####%%%%%%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%#%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************############**********####################################################################################******************************************************************************************************************************##########################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*++++*+++++++*********************************************************************************++++++++++++++++++*******##********++++++++++++++++++++++++++++++++++++*************************######************************************************************%@@@@@@@@@@@@@@@@@%************#@@@@@@@@@@@@@@@@*+**********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%###########%#%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######*****************************************+++++++++++++++++++++++++++++++++++++++++++*********************###########################################%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################******************************************************************************************++++++++++++++++++++++++++++++++++++++++**#######**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##**++++++++++++++++++++++++++++***###########******************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+******#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%################################%%%%%%%%%%%%######%%%%%%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************##**##############################################################################################################******************************************************************************************************************************##########################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%**++++*++++++++*******************************************************************************+++++++++++++++++++*******###*******++++++++++++++++++++++++++++++++++***************************######***********************************************************#@@@@@@@@@@@@@@@@@@%************%@@@@@@@@@@@@@@@#***********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%################%##%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######*******************************************+++++++++++++++++++***++++++++++++++++************************#########################################%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################******************************************************************************************+++*++++++++++++++++++++++++++++++++++*########**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##**++++++++++++++++++++++++++++++***###########**#****************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%################################%%%%%%%%%%########%%%%%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***************************#####################################################################################################################********************************************************************************************************************######***###########################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**+*++*+++++++++****************************************************************************+++++++++++++++++++++*******###*******+++++++++++++++++++++++++++++++******************************######***********************************************************%@@@@@@@@@@@@@@@@@@#************@@@@@@@@@@@@@@@@************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%######********************************************+++++++++++++++++*******++++++*********************************#######################%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################*********************************************************************************************++++++++++++++++++++++++++++++++++*#########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##**++++++++++++++++++++++++++++++++***#########**********************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%#################################%%%%%%%#########%%%%%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************##########################################################################################################################********************************************************************************************************************####################################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**+**++++++++++++**************************************************************************+++++++++++++++++++++******######******+++++++++++++++++++++++++++++********************************######**********************************************************#@@@@@@@@@@@@@@@@@@%************%@@@@@@@@@@@@@@@#+***********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%#%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%######*****************+***************************+++++++++++++***********+++++++++++++*************************#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################***********************************************************************************+*******+++++++++++++++++++++++++++++++++++*#########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##***++++++++++++++++++++++++++++++++*****####%%####*******************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%################################################%%%%%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************############################################################################################################################*******************************************************************************************************************#####################################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******++++++++++++++***********************************************************************++++++++++++++++++++++******#######******++++++++++++++++++++++++++**********************************######**********************************************************%@@@@@@@@@@@@@@@@@@%************@@@@@@@@@@@@@@@@*+***********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%####%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%######*****************+***************************+++++*******************+++++++++++++*************************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################****************************************************************************************+++++***+++++++++++++++++++++++++++++*#########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%###**++++++++++++++++++++++++++++++++*******#####%%###*******************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%###############################################%%%%%%############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************################################################################################################################################*******************************************************************************************************************#####################################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******+++++++++++++++**********************************************************************++++++++++++++++++++++*****#########*****++++++++++++++++++++++++************************************######**********************************************************@@@@@@@@@@@@@@@@@@@#***********#@@@@@@@@@@@@@@@%*************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%#####%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%######*****************+****************************++++********************++++**********************************##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################*************************************************************************************++++++****++++++++++++++++++++++++++++*#########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%###**++++++++++++++++++++++++++++++++++********#####%%###****************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%##############################################%%%%%%#############################################################%%%%%%%%%%%%%%%%%%%#%%#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***#############################################################################################################################################******************************************************************************************************************#######################################***************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*****++*+++++++++++++++++*****************************************************************++++++++++++++++++++++*****##########******+++++++++++++++++******************************************######*********************************************************#@@@@@@@@@@@@@@@@@@%************@@@@@@@@@@@@@@@@**************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%######%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%######************************************************************************************************************################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%################################################################******************************************************************************+*****+++++++****++++++++++++++++++++++++++**##########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%###**+++++++++++++++++++++++++++++++++++*********######%%###*************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%#############################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################***************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**+**++*++++++++++++++++++**************************************************************++++++++++++++++++++++++*****###########*****++++++++++++++*********************************************######*********************************************************%@@@@@@@@@@@@@@@@@@#***********#@@@@@@@@@@@@@@@%**************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#######***********************************************************************************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################************************************************************************************++++++****++++++++++++++++++++++++++*###########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%###**++++++++++++++++++++++++++++++++++++***********######%####***********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%#############################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################**************************************************************#%%@@@@@@@@@@@@@@@@@@@@@%%*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*++**+++++++++++++++++++++*************************************************************++++++++++++++++++++++++*****############******+*++******************************************************######********************************************************#@@@@@@@@@@@@@@@@@@@#***********@@@@@@@@@@@@@@@@#*************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#######***********************************************************************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################***********************************************************************************++++++********++++++++++++++++++++***###########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%###**+++++++++++++++++++++++++++++++++++++++***********######%%###**********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++***************************#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%############################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################**************************************************************#%%@@@@@@@@@@@@@@@@@@@@@%%#*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*+*++***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*++***+++++++++++++++++++++++*********************************************************+++++++++++++++++++++++*******#############***************************************************************#####*********************************************************%@@@@@@@@@@@@@@@@@@%***********#@@@@@@@@@@@@@@@%**************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%#####%%%%%#####%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%######************************************************************************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################************************************************************************************++***********+++++++++++++++++++***###########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%###**++++++++++++++++++++++++++++++++++++++++*************######%%###*******************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%###########################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################**************************************************************#%%@@@@@@@@@@@@@@@@@@@@@%%#*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*+*++***#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**+***+*++++++++++++++++++++++*******************************************************++++++++++++++++++++++++*******#############***************************************************************#####*********************************************************%@@@@@@@@@@@@@@@@@@#*********+*@@@@@@@@@@@@@@@@#**************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%########%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%########%%%%######%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################***************************************************************************************************++++++++++++++++***###########**+++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%###**+++++++++++++++++++++++++++++++++++++++++++**++********######%%%%##****************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################*************************************************************##%@@@@@@@@@@@@@@@@@@@@@@%%#**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++*+**+***#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********++++++++++++++++++++++******************************************************+++++++++++++++++++++++++*******#############***************************************************************#####********************************************************#@@@@@@@@@@@@@@@@@@@#**********%@@@@@@@@@@@@@@@@***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%########%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%##########%%%%######%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%####*************************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################*************************************************************************************************++++++++++++++++**#############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++***********######%%%###************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################*************************************************************##%@@@@@@@@@@@@@@@@@@@@@@%%#***********************************+++++++++++++++++++++++++++++++++++*****************+******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************++++++++**+++******************************************************++++++++++++++++++++++++********#############***************************************************************#####********************************************************%@@@@@@@@@@@@@@@@@@%**********#@@@@@@@@@@@@@@@@%***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%########%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%############%%%%######%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#####***********************************************************************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################*********************************************************************************************++++++++++++++++++**#############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%####*+++++++++++++++++++++++++++++++++++++++++++++*+++++**+********######%%%###*******************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************###############%%#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################*************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@%%#************************************++++++++++++++++++++++++++++++++++*****************+******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+*****************+++++++***++*****************************************************+++++++++++++++++++++++++********#############***************************************************************#####********************************************************@@@@@@@@@@@@@@@@@@@#**********%@@@@@@@@@@@@@@@@****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%########%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%#############%%%%######%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*********************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################******************************************************************************************++++++++++++++++++++**#############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%####*+++++++++++++++++++++++++++++++++++++++++++++++++++++*++********#######%%%##*****************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************###############%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################************************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@%#**************************************++++++++++++++++++++++++++++++*********+*********+***+**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********************++++*********************************************************+++++++++++++++++++++++**********#############***************************************************************#####*******************************************************#@@@@@@@@@@@@@@@@@@@**********#@@@@@@@@@@@@@@@@%****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%#########%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%################%%%#######%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##******************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################*******************************************************************************************+++++++++++*++**+***#############**++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%####**+++++++++++++++++++++++++++++++++++++++++++++++++++++++***********######%%%%##************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************##########%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################************************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@%#**************************************++++++++++++++++++++++++++++++***********************+***@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************++**********************************************************++++++++++++++++++++++************###########****************************************************************#####*******************************************************%@@@@@@@@@@@@@@@@@@%**********%@@@@@@@@@@@@@@@@#****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%#########%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%#################%%%########%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%##***************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################******************************************************************************************+++++++++++*++**+***#############**++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%####**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#######%%###*******************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************#########%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################************************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@%#**************************************+++++++++++++++++++++++++++++****************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@%*************************************************************************************++++++++++++++++++++++************###########****************************************************************#####*******************************************************@@@@@@@@@@@@@@@@@@@#*********#@@@@@@@@@@@@@@@@@*****************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%#########%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%####################%%%#######%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%#**************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################****************************************************************************************++**++++++++++*++**#######%%######*++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%####**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######%%%###**************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************########%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################************************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@%#****************************************++++++++++++++++++++++++++*****************************%@@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************************************************************+++++++++++++++++++++**************#########*****************************************************************#####******************************************************%@@@@@@@@@@@@@@@@@@@**********%@@@@@@@@@@@@@@@@#****************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%#########%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%#####################%%%########%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%#************************************************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################********************************************************************************************+++++*++*++**#######%%######*++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%###**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#######%%%###*******************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************########%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%################################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################************************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@%#*********************************************+++++++++++++++++++++*****************************%@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************************************************+++++++++++++++++++++***************#######******************************************************************#####******************************************************%@@@@@@@@@@@@@@@@@@%********+#@@@@@@@@@@@@@@@@@*****************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%#######################%%########%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%#%%%%%%%%%%%#**********************************************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################*******************************************************************************************+++++*+++++**#####%#%%######*+++++++++++++++++++++++++++++++++++++++++++++++++++++++*######%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%###**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************############***************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************#######%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%################################################################%%%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################***********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@%#**********************************************++++++++++++++++++*******************************%@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************************************************************++++++++++++++++++++******************####*******************************************************************#####*****************************************************#@@@@@@@@@@@@@@@@@@@#*********%@@@@@@@@@@@@@@@@%*****************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%########################%%########%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%#############*********************************************************************************************#####%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################********************************************************************************************++***++++**#####%#%%%#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++*######%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********############********************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************#######%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%################################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################%%%%%########################################################*****************************************************************************************************************########################################***********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@%#************************************************++++++++++++++*********************************#@@@@@@@@@@@@@@@@@@@@@@@@@%%***************************************************************************************++++++++++++++++++******************************************************************************************#####*****************************************************%@@@@@@@@@@@@@@@@@@@#********#@@@@@@@@@@@@@@@@@#*****************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%#########################%#########%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%#############********************************************************************************************#######%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################**********************************************************************************************++++***#####%%%%%#####**++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%####**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#######%####***************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%################################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%######################################################*****************************************************************************************************************########################################***********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************+++++++++++++*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@%%*******************************************************************+*******************++++++++++++++++++******************************************************************************************#####*****************************************************@@@@@@@@@@@@@@@@@@@%*********%@@@@@@@@@@@@@@@@%******************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%###########################%%########%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%#############*******************************************************************************************#########%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################*********************************************************************************************++++**######%%%%%######*+++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%####**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#######%###***********************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%################################################################%%%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%####################################################*****************************************************************************************************************#########################################***********************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%******************************************************+++++++**********************************#%%@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************++++++++++++++++******************************************************************************************#####****************************************************#@@@@@@@@@@@@@@@@@@@#********#@@@@@@@@@@@@@@@@@#******************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%###########################%%#########%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%###############***************************************************************************************############%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################********************************************************************************************+++**######%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%###**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************######%####*****************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%#####################################################%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%####################################################*****************************************************************************************************************#########################################**********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%***********************************************************************************************#%%%%%%@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************++++++++++++++++******************************************************************************************#####****************************************************%@@@@@@@@@@@@@@@@@@@#********%@@@@@@@@@@@@@@@@%*******************%@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%############################%%#########%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%##################************************************************************************************###########%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################*******************************************************************************************+*+**######%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%###**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#######%###***************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%#####################################################%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%####################################################*****************************************************************************************************************#########################################**********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%***********************************************************************************************#%%%%%%%@@@@@@@@@@@@@@@@@%%#*****************************************************************************************++++++++++++++++******************************************************************************************#####****************************************************@@@@@@@@@@@@@@@@@@@%*******+#@@@@@@@@@@@@@@@@@#*******************%@@@@@@@@@@@@@@@@@@###%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%##########******#############%%#########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%####################*********************************************************************************###########%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################*****************************************************************************************+*+**#####%%%%%%%#####**++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************######%%###*********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%###################################################*****************************************************************************************************************#########################################**********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%************************************************************************************************#%%%%%%@@@@@@@@@@@@@@@@%%%#*****************************************************************************************++++++++++++++++***************************************************************#**************************#####***************************************************#@@@@@@@@@@@@@@@@@@@#********%@@@@@@@@@@@@@@@@@********************%@@@@@@@@@@@@@@@@@@##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%########***********##########%%##########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%######################*****************************************************************************###########%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################***************************************************************************************++*+*######%%%%%%%#####**++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%###*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#####%%#####**************###***********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%###################################################*****************************************************************************************************************#########################################**********************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%************************************************************************************************#%%%%%%%@@@@@@@@@@@@@@@%%%******************************************************************************************++++++++++++++++**************************************************************###*************************#####***************************************************%@@@@@@@@@@@@@@@@@@@********#@@@@@@@@@@@@@@@@@%********************%@@@@@@@@@@@@@@@@@@##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%#######**************#########%%##########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%#######################**************************************************************************##########%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################*************************************************************************************+**+*######%%%%%%%######*++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%###*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************######%%####************######********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%###################################################*****************************************************************************************************************#########################################**********************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%************************************************************************************************####%%%%@@@@@@@@@@@@@@@%%%******************************************************************************************++++++++++++++++**************************************************************####************************#####***************************************************@@@@@@@@@@@@@@@@@@@%********%@@@@@@@@@@@@@@@@@#********************%@@@@@@@@@@@@@@@@@@#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%######*****************#######%##%########%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%##########################**********************************************************************#########%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################***********************************************************************************+****#####%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%###**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************###########**********########*****************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%###################################################*****************************************************************************************************************#########################################**********************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************************************************************************######%@@@@@@@@@@@@@@@%%#******************************************************************************************++++++++++++++++*************************************************************#####************************#####**************************************************#@@@@@@@@@@@@@@@@@@@#*******#@@@@@@@@@@@@@@@@@@*********************@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%######******************#########%##########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%############################*******************************************************************########%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################***************************************************************************************#####%%%%%%%%%#####**+++++++++++++++++++++++++++++++++++++++++++++++++++***######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************############******##########**************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%##################################################*****************************************************************************************************************#########################################**********************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%**************************************************************************************************#####%%@@@@@@@@@@@@@@%%#*+****************************************************************************************++++++++++++++++*************************************************************#####************************#####**************************************************%@@@@@@@@@@@@@@@@@@@********%@@@@@@@@@@@@@@@@@%*********************@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%######*******************#########%#########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%###############################**************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################*************************************************************************************####%%%%%%%%%%#####**+++++++++++++++++++++++++++++++++++++++++++++++++++***######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%###*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************###########*****###########************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%###################################################**************************************************************************************************************############################################********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%*******************************************************************************************************%%@@@@@@@@@@@@@%%%*********************************************************************************************++++++++++++++*************************************************************#####************************#####*************************************************#@@@@@@@@@@@@@@@@@@@%*******#@@@@@@@@@@@@@@@@@@*********************#@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%#####**********************#######%%#########%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%###################################********************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################*******************************************************************************++***####%%%%%%%%%%%####**++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************############*############***********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%##################################################***************************************************************************************************************############################################********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************#%@@@@@@@@@@@@@%%#*********************************************************************************************++++++++++++++************************************************************#######***********************#####*************************************************#@@@@@@@@@@@@@@@@@@@#*******%@@@@@@@@@@@@@@@@@%*********************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%#####***********************#######%%#########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%######################################****************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################******************************************************************************+***#####%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%##*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************##########################********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%##################################################**************************************************************************************************************#############################################********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************#%@@@@@@@@@@@@@%%#*********************************************************************************************+++++++++++++*************************************************************#######***********************#####*************************************************%@@@@@@@@@@@@@@@@@@@*******#@@@@@@@@@@@@@@@@@@#*********************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@%#####************************#######%%#########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%###########################################*******************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################********************************************************************************#####%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#########################******************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%##################################################**************************************************************************************************************#############################################********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************#%@@@@@@@@@@@@@%%#*********************************************************************************************+++++++++++++*************************************************************#######***********************#####************************************************#@@@@@@@@@@@@@@@@@@@%*******%@@@@@@@@@@@@@@@@@@**********************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############********###################%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####*************************#######%##########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################*******************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################******************************************************************************#####%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#######################*****************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%#################################################************************************************************************************************************###############################################********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%@@@@@@@@@@@@@%%**********************************************************************************************++++++++++++**************************************************************#######***********************######***********************************************%@@@@@@@@@@@@@@@@@@@#******#@@@@@@@@@@@@@@@@@@%**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*************################%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####**************************######%%##########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################*****************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################******************************************************************************#####%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#####################*************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%#################################################************************************************************************************************************###############################################********************************************************%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%@@@@@@@@@@@@%%%**********************************************************************************************++++++++++++*************************************************************########***********************######***********************************************@@@@@@@@@@@@@@@@@@@@*******%@@@@@@@@@@@@@@@@@@#+*********************%@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########***************###############%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####***************************######%%#########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################****************************************************************************####%%%%%%%%%%%%#####**+++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%##***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************####################************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%#################################################***********************************************************************************************************################################################********************************************************%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%@@@@@@@@@@@@%%#***********************************************************************************************+++++++++++*************************************************************########***********************######**********************************************#@@@@@@@@@@@@@@@@@@@%******#@@@@@@@@@@@@@@@@@@%***********************%@@@@@@@@@%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########******************#############%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####****************************#####%%##########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################*************************************************************************#####%%%%%%%%%%%%%#####*+++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%#****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************##################***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%#################################################***********************************************************************************************************################################################********************************************************%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%@@@@@@@@@@@@%%#************************************************************************************************++++++++++*************************************************************########***********************######**********************************************%@@@@@@@@@@@@@@@@@@@#******%@@@@@@@@@@@@@@@@@@%+**********************%@@@@@@@@@%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*******************#############%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####*****************************#####%%##########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################***********************************************************************#####%%%%%%%%%%%%%#####**++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%#****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************################***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%%################################################*********************************************************************************************************###################################################******************************************************#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%%@@@@@@@@@@@%%************************************************************************************************************************************************************************########***********************######**********************************************@@@@@@@@@@@@@@@@@@@@*******@@@@@@@@@@@@@@@@@@@*+**********************%@@@@@@@@@%@@%*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*********************###########%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####******************************#####%%##########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%######################################################################################**********************************************************************#####%%%%%%%%%%%%%#####**++++++++++++++++++++++++++++++++++********++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%#****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************##############**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%%################################################**********************************************************************************************************##################################################******************************************************#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%%@@@@@@@@@@@%%************************************************************************************************************************************************************************########***********************######*********************************************#@@@@@@@@@@@@@@@@@@@%******#@@@@@@@@@@@@@@@@@@%************************%@@@@@@@@@%@@%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*********************###########%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####*******************************#################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################*********************************************************************#####%%%%%%%%%%%%%#####**++++++++++++++++++++++++++++++++**********++++++++**######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%##******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************##############********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++**************************************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%%################################################***********************************************************************************************************#################################################******************************************************#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%%@@@@@@@@@@%%#***********************************************************************************************************************************************************************#########***********************######*********************************************%@@@@@@@@@@@@@@@@@@@#******%@@@@@@@@@@@@@@@@@@#************************%@@@@@@@@%%@@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########**********************##########%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####********************************################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################*******************************************************************####%%%%%%%%%%%%%%#####**+*+++++++*********+++++++++++*************++**++++**######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%##******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************##############*****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*+++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%%%##############################################************************************************************************************************************#################################################******************************************************%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%%@@@@@@@@@@%%#***********************************************************************************************************************************************************************#########***********************######*********************************************@@@@@@@@@@@@@@@@@@@%******#@@@@@@@@@@@@@@@@@@@*************************%@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########************************#########%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@######*********************************################%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################****************************************************************#####%%%%%%%%%%%%%%%####**+*+++++***********++++++++*********************+++**######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%#*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************########%####***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###**++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************#*#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%%%##############################################*************************************************************************************************************################################################******************************************************%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%%@@@@@@@@@%%%************************************************************************************************************************************************************************#########***********************######*******************************************+#@@@@@@@@@@@@@@@@@@@%******%@@@@@@@@@@@@@@@@@@%*************************%@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*************************########%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@######*********************************#################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################***************************************************************#####%%%%%%%%%%%%%%%#####*+*++++*****************************************+++**######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%#*******+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************########%####******#*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**++++++++++++++++++++++++++++++++++++++++++++**********************************************************************####################%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%#######################%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%##############################################*************************************************************************************************************################################################*****************************************************#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************************************************************************************************#%%%@@@@@@@@@%%%************************************************************************************************************************************************************************#########***********************######********************************************%@@@@@@@@@@@@@@@@@@@#*****#@@@@@@@@@@@@@@@@@@@#*************************@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########**************************######%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%######**********************************#################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################*************************************************************#####%%%%%%%%%%%%%%%#####************************************************+++**######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%##********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************##############********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**++++++++++++++++++++++++++++++++++++++++++**********************************************************************#####################%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%############################################**************************************************************************************************************################################################*****************************************************#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************************************#%%@@@@@@@@@@%%#***********************************************************************************************************************************************************************##########***********************######*******************************************#@@@@@@@@@@@@@@@@@@@%******%@@@@@@@@@@@@@@@@@@@**************************@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***************************#####%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#####************************************################%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################***********************************************************####%%%%%%%%%%%%%%%%%####*************************************************++**######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%##*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************##############*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*++++++++++++++++++++++++++++++++++++++++++*********************************************************************#####################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%############################################**************************************************************************************************************################################################*****************************************************#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************#***********************************************************#%%@@@@@@@@@@%%#***********************************************************************************************************************************************************************##########***********************######*******************************************%@@@@@@@@@@@@@@@@@@@%*****#@@@@@@@@@@@@@@@@@@@%**************************@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########****************************####%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#####************************************#################%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################**********************************************************####%%%%%%%%%%%%%%%%%####**+**********************************************+++**#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%#**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************##########%###**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++++++++++++++++++++++++++++++++++********************************************************************######################%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%############################################***************************************************************************************************************###############################################*****************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**************************************###########****************************************************#%%@@@@@@@@@@%%#***********************************************************************************************************************************************************************#####%####***********************######*******************************************@@@@@@@@@@@@@@@@@@@@#*****%@@@@@@@@@@@@@@@@@@@#*************************#@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*****************************###%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#####*************************************#################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################*******************************************************#####%%%%%%%%%%%%%%%%#####*******+***********************************+*****++***#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%#************++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************###############**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+*+++++++++++++++++++++++++++++++++++++*****************************************************************#########################%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%%###########################################***************************************************************************************************************###############################################*****************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************################***********************************************#%%@@@@@@@@@%%%************************************************************************************************************************************************************************####%%####***********************######******************************************#@@@@@@@@@@@@@@@@@@@%******@@@@@@@@@@@@@@@@@@@@**************************%@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*****************************###%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%####***************************************################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################******************************************************#####%%%%%%%%%%%%%%%%%#####************************************************++***#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%#****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************###############********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+*++++++++++++++++++++++++++++++++++++++************************************************************###########################%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%%###########################################***************************************************************************************************************###############################################*****************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************#################**********************************************#%%%@@@@@@@@%%#************************************************************************************************************************************************************************####%%####***********************######******************************************%@@@@@@@@@@@@@@@@@@@#*****%@@@@@@@@@@@@@@@@@@@%************************#%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*******************************##%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%####***************************************#################%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################*****************************************************#####%%%%%%%%%%%%%%%%%#####*****************************************************#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%#******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************##############******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+*++++++++++++++++++++++++++++++++++++++**********************************************************############################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%%##########################################****************************************************************************************************************###############################################*****************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************##################**********************************************#%%%@@@@@@@@%%#************************************************************************************************************************************************************************####%%####***********************######******************************************@@@@@@@@@@@@@@@@@@@%******@@@@@@@@@@@@@@@@@@@@#***********************#%@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**********************************##%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%###*****************************************#################%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%%%%@%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################***************************************************####%%%%%%%%%%%%%%%%%%%####*****************************************************#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************###############**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+*+++++++++++++++++++++++++++++++++***+**********************************************************###########################%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%###################%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%#########################################*****************************************************************************************************************###############################################*****************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************##################**********************************************#%%%@@@@@@@%%%*********************************************************************************************************************************####************************************####%%####***********************######*****************************************#@@@@@@@@@@@@@@@@@@@%*****#@@@@@@@@@@@@@@@@@@@@***********************#@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*************************************##%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%###******************************************################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################*************************************************####%%%%%%%%%%%%%%%%%%%####*+***************************************************#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%#**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#############*************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+*+*++++++++++*++++++++++++++++++***********************************************************##############################%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%################%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%#######################################******************************************************************************************************************###############################################****************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************##################**********************************************#%%%@@@@@@%%%#*******************************************************************************************************************************########**********************************###%%%####***********************######*****************************************%@@@@@@@@@@@@@@@@@@@#*****%@@@@@@@@@@@@@@@@@@@%**********************%@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%##********************************************#################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################***********************************************#####%%%%%%%%%%%%%%%%%%%####*****************************************************#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%#************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#############***********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+++*+*++++++++********++++++++*************************************************************#############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%#######################################******************************************************************************************************************###############################################****************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************##################**********************************************#%%%@@@@@@%%%#******************************************************************************************************************************##########********************************####%%%####***********************######****************************************#@@@@@@@@@@@@@@@@@@@%*****#@@@@@@@@@@@@@@@@@@@@#*********************#@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####********************************************##%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%##*********************************************#################%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################*********************************************#####%%%%%%%%%%%%%%%%%%%#####****************************************************#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%#**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************##############*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***++*+*+++++***********+*****************************************************************##############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%######################################*******************************************************************************************************************###############################################****************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************##################**********************************************#%%%@@@@@@%%%#******************************************************************************************************************************###########*******************************####%%%####***********************#####*****************************************#@@@@@@@@@@@@@@@@@@@%*****%@@@@@@@@@@@@@@@@@@@@**********************@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*********************************************###%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%##*********************************************#################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################********************************************#####%%%%%%%%%%%%%%%%%%%%####****************************************************#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#############*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***+**+***+***************************************************************************################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%%%####################################**********************************************************************************************************************##############################################****************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************#################***********************************************#%%%@@@@@@%%%******************************************************************************************************************************#############******************************####%%%####************************####*****************************************%@@@@@@@@@@@@@@@@@@@#****#@@@@@@@@@@@@@@@@@@@@%*********************%@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**********************************************####%%%%%%%%%%%%%%%%%@@@@@@@@%%%%#***********************************************#################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################******************************************####%%%%%%%%%%%%%%%%%%%%%####****************************************************#####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************#############***************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%****************************+++****************************************************##################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%###################################***********************************************************************************************************************##############################################****************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************#################***********************************************#%%%@@@@@%%%%*****************************************************************************************************************************##############******************************####%%%####************************####****************************************#@@@@@@@@@@@@@@@@@@@%*****%@@@@@@@@@@@@@@@@@@@@#********************#@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**********************************************####%%%%%%%%%%%%%%%%%@@@@@@@%%%%%#***********************************************#################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%%%%%%%%%@@@@@@@@%%@@@%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################******************************************####%%%%%%%%%%%%%%%%%%%%%####****************************************************#####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************#############***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**********************************************************************************#################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%################################**************************************************************************************************************************##############################################****************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************#################***********************************************#%%%@@@@@%%%#*****************************************************************************************************************************##############******************************####%%%####************************####****************************************%@@@@@@@@@@@@@@@@@@@#*****@@@@@@@@@@@@@@@@@@@@@*********************@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**********************************************######%%%%%%%%%%%%%%%@@@@@%%%%%%%*************************************************#################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################****************************************####%%%%%%%%%%%%%%%%%%%%%####*****************************************************####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************#############******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************************************##################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%###############################***************************************************************************************************************************##############################################****************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************#################***********************************************#%%%@@@@@%%%#*****************************************************************************************************************************###############*****************************####%%%####************************####****************************************@@@@@@@@@@@@@@@@@@@@*****%@@@@@@@@@@@@@@@@@@@@%********************%@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*********************************************########%%%%%%%%%%%%%%%@@@%%%%%%%#**************************************************################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################*************************************#####%%%%%%%%%%%%%%%%%%%%%####*****************************************************####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************#############**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************######################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%############################******************************************************************************************************************************##############################################****************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************#################***********************************************#%%%@@@@%%%%******************************************************************************************************************************#####%%%%%#####*****************************####%%%####*************************##****************************************#@@@@@@@@@@@@@@@@@@@%*****@@@@@@@@@@@@@@@@@@@@@#*******************#@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######********************************************#########%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################************************************####%%%%%%%%%%%%%%%%%%%%%%####**************************************************+**####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************#############************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************########################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%###########################*******************************************************************************************************************************##############################################****************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%************#************************################************************************************#%%%@@@@%%%#******************************************************************************************************************************#####%%%%%#####*****************************####%%%####*************************##****************************************%@@@@@@@@@@@@@@@@@@@#****#@@@@@@@@@@@@@@@@@@@@@*******************#@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*******************************************##########%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################**********************************####%%%%%%%%%%%%%%%%%%%%%%#####*************************************************+**####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************#############*********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************#########################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%%#########################********************************************************************************************************************************##############################################****************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%************##***********************################************************************************#%%%@@@@%%%#*****************************************************************************************************************************#####%%%%%%#####*****************************####%%%####*************************#****************************************#@@@@@@@@@@@@@@@@@@@%*****%@@@@@@@@@@@@@@@@@@@@%*******************%@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***************************************###########%%%%%%%%%%%%%%%%%%%%%%#************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################********************************####%%%%%%%%%%%%%%%%%%%%%%#####*************************************************+**#####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************############*****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************#########################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%%#########################********************************************************************************************************************************#############################################*****************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%************##***********************################************************************************#%%%@@@@%%%#*****************************************************************************************************************************#####%%%%%%######****************************####%%%####******************************************************************%@@@@@@@@@@@@@@@@@@@#****#@@@@@@@@@@@@@@@@@@@@@#******************#@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################***********************************############%%%%%%%%%%%%%%%%%%%%%***************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%@@@@@@%@%%@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################*******************************####%%%%%%%%%%%%%%%%%%%%%%#####*************************************************+**#####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************#############**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************############################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%%#########################********************************************************************************************************************************##############################################***************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************################************************************************#%%%@@@%%%%******************************************************************************************************************************#####%%%%%%######****************************####%%%####******************************************************************@@@@@@@@@@@@@@@@@@@@*****%@@@@@@@@@@@@@@@@@@@@%******************#@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################***************************##############%%%%%%%%%%%%%%%%%%#****************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################*****************************####%%%%%%%%%%%%%%%%%%%%%%%####*************************************************+**#####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#********#############********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************###########################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%%#########################********************************************************************************************************************************##############################################***************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************################************************************************#%%%%@%%%%#******************************************************************************************************************************#####%%%%%%######****************************####%%%###******************************************************************#@@@@@@@@@@@@@@@@@@@%****#@@@@@@@@@@@@@@@@@@@@@%******************%@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################************************###############%%%%%%%%%%%%%%%%%%#*****************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################***************************####%%%%%%%%%%%%%%%%%%%%%%%%%###****************************************************#####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#####*******############*******************+++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************########################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%%#########################***********************************************************************************************************************##*******##############################################***************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************##################**********************************************#%%%%%%%%%#******************************************************************************************************************************#####%%%%%%######****************************####%%%###******************************************************************%@@@@@@@@@@@@@@@@@@@#****%@@@@@@@@@@@@@@@@@@@@@#*****************#@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*********************#################%%%%%%%%%%%%%%%%%#*******************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################**************************####%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************************#####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#####*******#############********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************#######################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%##########################**********************************************************************************************************************#######**###############################################***************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************##################***********************************************%%%%%%%%%*******************************************************************************************************************************#####%%%%%%######****************************####%%%###*****************************************************************#@@@@@@@@@@@@@@@@@@@%*****@@@@@@@@@@@@@@@@@@@@@%******************@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*******************##################%%%%%%%%%%%%%%%%#********************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################************************####%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************************#####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************###**********############*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************###################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%##########################**********************************************************************************************************************########################################################***************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************#################***********************************************%%%%%%%%#*******************************************************************************************************************************#####%%%%%%######****************************####%%%###*****************************************************************%@@@@@@@@@@@@@@@@@@@#****#@@@@@@@@@@@@@@@@@@@@@#*****************%@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################****************####################%%%%%%%%%%%%%%##*********************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################**********************###%%%%%%%%%%%%%%%%%%%%%%%%%%####****************************************************####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##*************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************####################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%###########################********************************************************############*************************************************########################################################**************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************##################**********************************************%%%%%%%%#*******************************************************************************************************************************#####%%%%%%######****************************####%%%###*****************************************************************@@@@@@@@@@@@@@@@@@@@*****%@@@@@@@@@@@@@@@@@@@@@*****************#@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################***************#######################%%%%%%%%%%%##**********************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################*****#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################********************###%%%%%%%%%%%%%%%%%%%%%%%%%%####****************************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##***************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************###########*******++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%##*******************************************###################%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%############################****************************************************##################*********************************************#########################################################**************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************###################*********************************************%%%%%%%%#*******************************************************************************************************************************#####%%%%%%######****************************####%%%###****************************************************************#@@@@@@@@@@@@@@@@@@@%****#@@@@@@@@@@@@@@@@@@@@@%*****************@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################************#########################%%%%%%%%%%#************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################******#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################******************####%%%%%%%%%%%%%%%%%%%%%%%%%%%###****************************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##*******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************###########******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##************************************###################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%############################*************************************************########################******************************************#########################################################**************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************####################********************************************%%%%%%%#********************************************************************************************************************************#####%%%%%%######****************************####%%%###****************************************************************%@@@@@@@@@@@@@@@@@@@#****%@@@@@@@@@@@@@@@@@@@@@#****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################***********#########################%%%%%%%%%%#************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################********################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################*****************####%%%%%%%%%%%%%%%%%%%%%%%%%%%###****************************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************************************+++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************###**#####******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%##**********************************#############%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################%%%%%%%%%%%%%%%%###############################*************************#########**********############################****************************************#########################################################**************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************#*************************#######################****************************************%%%%%%%##*******************************************************************************************************************************#####%%%%%%%####*****************************###%%%%###***************************************************************#@@@@@@@@@@@@@@@@@@@%****#@@@@@@@@@@@@@@@@@@@@@@****************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################**********#########################%%%%%%%%%%#*************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**********################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################***************####%%%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************+++++++************++++++++**+++++++++*+++++++++++++++++++++++++++++++++++++++++****************************************#***##***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%#*********************************#########%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################%%%%%%%%%%%%%%%%#################################***********************#########**********#############################***************************************#########################################################**************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************#**************************############################**********************************#%%%%%%#********************************************************************************************************************************#####%%%%%%%####*****************************###%%%%###***************************************************************%@@@@@@@@@@@@@@@@@@@#****%@@@@@@@@@@@@@@@@@@@@@%****************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################********###########################%%%%%%%%%#*************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################**************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*******************************************************************++******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************#****##**#******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%#*********************************##########%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################%%%%%%%%%%%%%%%%####################################*###****************#########*********##############################***************************************#########################################################**************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********##****************************##############################*****************************##%%%%%%#********************************************************************************************************************************#####%%%%%%#####*****************************###%%%%###***************************************************************@@@@@@@@@@@@@@@@@@@%*****@@@@@@@@@@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################******############################%%%%%%%%%#**************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************##****#*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%%%%%##********************************##########%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################%%%%%%%%%%%%%%%%##########################################*************###########********###############################**************************************##########################################################*************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********##*****************************##################################*****##########*********##%%%%%##*********************************************************************************************************************************####%%%%%%#####*****************************###%%%%###**************************************************************#@@@@@@@@@@@@@@@@@@@%****#@@@@@@@@@@@@@@@@@@@@@@***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*****############################%%%%%%%%##***************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*****************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***************************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#**********************************************************************************************************++++++++++++++++++++++++++++++++++++++****************************************++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%#*******************************###########%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################%%%%%%%%%%%%%%%%###########################################************###########******#################################**************************************##########################################################*************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********#*********************************#########################################################%%%%%##**#******************************************************************************************************************************####%%%%%%#####*****************************###%%%%###**************************************************************%@@@@@@@@@@@@@@@@@@@#****%@@@@@@@@@@@@@@@@@@@@@%***************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################**#############################%%%%%%%%##***************************************************************************##%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########********************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################********##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###****************************************************####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#**********************************************************************************************************++++++++++++++++++++++++++++++++++++++***************************************+++++*#***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#************************#################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################%%%%%%%%%%%%%%%#############################################*********############******#################################**************************************###########################################################************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********#**********************************########################################################%%%%%##**####*#*************************************************************************************************************************####%%%%%######*****************************###%%%%###*************************************************************#@@@@@@@@@@@@@@@@@@@%****#@@@@@@@@@@@@@@@@@@@@@@#**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################%%%%%%##***************************************************************************##%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########**********************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################*****##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###****************************************************####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++************************************++++++++**#********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#********************####################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################%%%%%%%%%%%%%%##############################################******###############*****###################################*************************************###########################################################************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********#**************************************####################################################%%%%###*##*##*#*************************************************************************************************************************######%%%#####******************************###%%%%###*************************************************************%@@@@@@@@@@@@@@@@@@@#****%@@@@@@@@@@@@@@@@@@@@@%**************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%%%#*****************************************************************************##%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################*#**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************************####%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##***********************************************************************************************************++++++++++++++++++++++++++++++++++++++***********************************++++++++=+*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##*****************#####################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################%%%%%%%%%%%%%%################################################***################*****###################################*************************************###########################################################************************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********#****************************************##################################################%%%%######*###**************************************************************************************************************************######%%######******************************###%%%%###************************************************************#@@@@@@@@@@@@@@@@@@@%****#@@@@@@@@@@@@@@@@@@@@@@%**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%##################################%#*****************************************************************************##%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%@@%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########***************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************************####%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##***********************************************************************************************************++++++++++++++++++++++++++++++++++++++**********************************+++++++++++=+***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##***************######################%%%%@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################%%%%%%%%%%%%##########################################################################################################*************************************###############################################################*********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********#*******************************************###############################################%%%%###########*************************************************************************************************************************##############******************************###%%%####************************************************************%@@@@@@@@@@@@@@@@@@@#****%@@@@@@@@@@@@@@@@@@@@@@#*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%#############################%%####******************************************************************************#%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########****************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***************************************************###%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##***************************************************************************************************************++++++++++++++++++++++++++++++************************************+++++++++++++++=+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*************#######################%%%@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################%%%%%%%%%%%%##########################################################################################################*************************************###############################################################*********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********##********************************************#############################################%%%############*************************************************************************************************************************##############******************************###%%%####************************************************************%@@@@@@@@@@@@@@@@@@%#****%@@@@@@@@@@@@@@@@@@@@@@*************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%##################################******************************************************************************##%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########******************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***************************************************##%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####*************************************************************************************************************++++++++++++++++++++++++++++++************************************+++++++++++****++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#***********########################%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################%%%%%%%%%%%%###########################################################################################################************************************##############################################################**********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********##*********************************************############################################%%%############*************************************************************************************************************************##############******************************###%%%####***********************************************************#@@@@@@@@@@@@@@@@@@@%#***#@@@@@@@@@@@@@@@@@@@@@@%*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%#################################*******************************************************************************##%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@%@@%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*******************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###**************************************************###%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####*************************************************************************************************************++++++**++++++++++++****+++************************************+++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*********#########################%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################%%%%%%%%%%%############################################################################################################************************************##############################################################**********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%**********###*********************************************############################################%%%###########***************************************************************************************************************************############*******************************###%%%####***********************************************************%@@@@@@@@@@@@@@@@@@%##***%@@@@@@@@@@@@@@@@@@@@@@#************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%################################*******************************************************************************##%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########********************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###**************************************************###%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######***********************************************######******************************************************++++++++++++++++++++++++**************************************++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##******##########################%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%####################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
######################################################################################%%%%%%%%%%############################################################################################################************************************##############################################################**********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%**********###*********************************************############################################%%###########****************************************************************************************************************************############*******************************###%%%####**********************************************************#@@@@@@@@@@@@@@@@@@@%#***#@@@@@@@@@@@@@@@@@@@@@@%************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%###############################********************************************************************************##%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***********************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######*********************************************##########******************************************************++++++++++++++++++++++**************************************+++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*****##########################%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
######################################################################################%%%%%%%%%#############################################################################################################************************************##############################################################**********************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%**********###*********************************************############################################%%##########******************************************************************************************************************************##########********************************###%%%####**********************************************************%@@@@@@@@@@@@@@@@@@@%#***%@@@@@@@@@@@@@@@@@@@@@@#************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%##############################*********************************************************************************##%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########***********************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%###*********************************************#######%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########******************************************#############******************************************************+++++++++++++++++*****************************************+++++*****########*#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%%%#############################################################################################################***********************************##############################################################***********************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************#############################################%##*#######*******************************************************************************************************************************########*********************************###%%%####*********************************************************#@@@@@@@@@@@@@@@@@@@%###**@@@@@@@@@@@@@@@@@@@@@@@************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%#############################*********************************************************************************###%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%###********************************************########%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########***************************************###############********************************************************+++++++++++****************************************************#############*#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%%%#############################################################################################################***********************************##############################################################***********************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************################################################*#######********************************************************************************************************************************######*********************************####%%%####*********************************************************%@@@@@@@@@@@@@@@@@@@%###*#@@@@@@@@@@@@@@@@@@@@@@%************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%############################*********************************************************************************###%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%##******************************************#########%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########*************************************################****************************************************************************************************************#####################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%%%%################################################################################################################*********************************##############################################################**********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************##############################################*#*#######************************************************************************************************************************************************************************###%%%####********************************************************#@@@@@@@@@@@@@@@@@@@@%###*%@@@@@@@@@@@@@@@@@@@@@@#***********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%#######################%#%#**********************************************************************************###%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%##*****************************************##########%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########**********************************###################******************************************************************+*****************************************#########################+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%%%%################################################################################################################*********************************##############################################################**********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************##############################################*#*#######************************************************************************************************************************************************************************###%%%####********************************************************%@@@@@@@@@@@@@@@@@@@%%####@@@@@@@@@@@@@@@@@@@@@@%***********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%##################%%%%%@%%%%%%%%%%%%%%%%%%%%%#########################%#**********************************************************************************###%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##***************************************############%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########********************************#####################**####****************************************************************************************************##########################+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%%%%################################################################################################################*********************************##############################################################**********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************##############################################*##########***********************************************************************************************************************************************************************###%%%####*******************************************************#@@@@@@@@@@@@@@@@@@@@%%###%@@@@@@@@@@@@@@@@@@@@@@%***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%#############%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%##########################***********************************************************************************##%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%##**************************************#############%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*****************************################################************************************************************************************************###########################+==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#########################################################################################%%%%##################################################################################################################*******************************###############################################################**********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************#################################################*########**********************************************************************************************************************************************************************###%%%####*******************************************************%@@@@@@@@@@@@@@@@@@@%%%###%@@@@@@@@@@@@@@@@@@@@@@#**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%########%%%@@@@@%%%%%%%@%%%@@@%%%%%%%%%%%%%%%%%########################************************************************************************************###%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%############%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%###************************************#############%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############**************************#################################%%#*********************************************************************************************############################*==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%####################################################################################################################******************************################################################################*********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************##########################################################**********************************************************************************************************************************************************************###%%%####******************************************************#@@@@@@@@@@@@@@@@@@@@%%%###@@@@@@@@@@@@@@@@@@@@@@%**********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%#######################*************************************************************************************##%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########***************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%###########%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%##***********************************############%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############************************###################################%%##*******************************************************************************************############################*+==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@@@@@@@%###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################################################################################******************************################################################################*********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************###########################################################*********************************************************************************************************************************************************************###%%%####******************************************************%@@@@@@@@@@@@@@@@@@@@%%%##%@@@@@@@@@@@@@@@@@@@@@@#**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@@@@@@@@@@%@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@%@@@@%@@@@@@%%%@%%@@@@%%%%%%%%@@%%%%%%%%%%%%%%%%%######################*************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######****************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%###########%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%##**********************************###########%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############**********************######################################%%%##****************************************************************************************######%%%%%%%#################*===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@@@@@@@%###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################################################################################******************************################################################################*********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********###********************************************#############################################################*******************************************************************************************************************************************************************####%%%####*****************************************************#@@@@@@@@@@@@@@@@@@@@%%%%#%@@@@@@@@@@@@@@@@@@@@@@@**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@@@@@@@@@@%@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@%%@@@@%%%%@@@@%%@%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%#################%##**************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*****************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%#*********************************##########%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############*********************########################################%%%%%#*************************************************************************************#####%%%%%%%%%%%###############*++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################################################################################*****************************#################################################################*********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********###********************************************#################################################*############******************************************************************************************************************************************************************####%%%####*****************************************************%@@@@@@@@@@@@@@@@@@@@%%%%#%@@@@@@@@@@@@@@@@@@@@@@%*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@@@@@@@@@@%@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%@@@%@@@%%@@%@@@@@@%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%#############%##%##**************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%#********************************#########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############******************############################################%%%%%##*******************************************************************************#####%%%%%%%%%%%%%%%###############*+==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################################################################################################################################################****************************#################################################################********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********###********************************************###############################################################*****************************************************************************************************************************************************************####%%%####****************************************************#@@@@@@@@@@@@@@@@@@@@%%%%#%@@@@@@@@@@@@@@@@@@@@@@@#*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################***************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##******************************########%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############****************###############################################%%%%%%%##**************************************************************************####%%%%%%%%%%%%%%%%%%%#######%########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################################################################################################################################################****************************#################################################################********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********###********************************************###############################################################*****************************************************************************************************************************************************************####%%%####****************************************************%@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@%*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################****************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*******************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##******************************#######%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############**************###############################################**#%%%%%%%%%%###*******************************************************************####%%%%%%%%%%%%%%%%%%%%%%######%#########**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################################################################################################################################################****************************#################################################################********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********###********************************************###############################################################*****************************************************************************************************************************************************************####%%%####***************************************************#@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%*********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%#****************************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#*****************************#######%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############*************###############################################****##%%%%%%%%%%%%%###***##########*********************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%######%###########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@%%%%%%@@@@@@@@@@@@@%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################***************************#################################################################********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********###********************************************################################################################****************************************************************************************************************************************************************####%%%####**************************##***********************@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@#********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%##%#%#%#*****************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#*****************************#####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############***********#################################################*****##%%%%%%%%%%%%%%%%%%%%%%############*********************************#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%@@@@@@@@@@@@@%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################***************************##################################################################*******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********###********************************************################################################################****************************************************************************************************************************************************************####%%%####**************************##**********************%@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%#%#*****************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#***************************#####%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############********##################################################******####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*******************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################***************************##################################################################*******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*********###********************************************################################################################****************************************************************************************************************************************************************####%%%####*************************###*********************#@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@#********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%%##*****************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#***************************####%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############*****################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################***************************##################################################################*******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*********###********************************************################################################################*******************#********************************************************************************************************************************************####%%%####*************************####********************%@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#**************************####%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############**####################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%#**#########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################***************************##################################################################*******************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*********###********************************************################################################################*******************#********************************************************************************************************************************************####%%%####*************************####*******************#@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%*******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%##################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##*************************###%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%#*****######**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%@@@@@@@@@@@@@@#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################***************************##################################################################*******************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###********************************************##################################################################**************************************************************************************************************************************************************####%%%####*************************####*******************%@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@#*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#*******************************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#************************###%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################%%%%%%%#############################################%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%#*********#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################**************************##################################################################*******************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###********************************************###################################################################*************************************************************************************************************************************************************####%%%####*************************####******************#@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*******************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%#####%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####********************##%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########%%%%#####################%%%%%%%%%%%#############################################%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%#**+++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################**************************##################################################################*******************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###*******************************************####################################################################*************************************************************************************************************************************************************####%%%####*************************####******************%@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###******************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########**************************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########****************##%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########%%%%%%%##################%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%#*+++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################**************************##################################################################*******************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###*******************************************####################################################################*************************************************************************************************************************************************************####%%%####************************#####*****************#@@@@@@@@@@@@@@@@@@@@%##%%%%%@@@@@@@@@@@@@@@@@@@@@@@*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########***************************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#######***********###%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%######%%%%%%%%%#################%%%%%%%%%%%%%%%#################################################%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%#*+*+*++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*************************##################################################################*******************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###*******************************************######################################################################***********************************************************************************************************************************************************####%%%####************************#####*****************%@@@@@@@@@@@@@@@@@@@@%##%%%%%@@@@@@@@@@@@@@@@@@@@@@%******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%######****************************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########****************************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%########*******##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####%%%%%%%%%%%################%%%%%%%%%%%%%%%%###################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%#*+*+*++*++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*************************##################################################################*******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###******************************************#########################################################################*********************************************************************************************************************************************************####%%%####************************######***************#@@@@@@@@@@@@@@@@@@@@%###%%%%@@@@@@@@@@@@@@@@@@@@@@@#******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%########***************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########******************************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%########****##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%####################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%#*+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++**#####%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################************************##################################################################*******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###******************************************##########################################################################********************************************************************************************************************************************************####%%%####************************######***************%@@@@@@@@@@@@@@@@@@@%####%%%%@@@@@@@@@@@@@@@@@@@@@@@******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%#########**************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*******************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%###########%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%####################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%#*++++*+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+****######%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################************************##################################################################*******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###******************************************###########################################################################******************#************************************************************************************************************************************####%%%####************************######**************#@@@@@@@@@@@@@@@@@@@@%####%%%%@@@@@@@@@@@@@@@@@@@@@@%*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%###########************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*******************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%#########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%#*++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+****######%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################************************##################################################################*******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###******************************************################################################################################**************************************************************************************************************************************************####%%%###*************************######**************%@@@@@@@@@@@@@@@@@@@@#*####%%@@@@@@@@@@@@@@@@@@@@@@@#*****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%#############**********************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############********************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%######%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%#################################################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%#####################%%%%*+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********######%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################************************##################################################################*******************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******####******************************************################################################################################**************************************************************************************************************************************************####%%%###*************************######**************@@@@@@@@@@@@@@@@@@@@%***###%%@@@@@@@@@@@@@@@@@@@@@@%*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%#############*********************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*********************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%#######################%%%%*+++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#####%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################************************##################################################################*******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******####******************************************#################################################################################*************************************************************************************************************************************************####%%%###*************************######************+%@@@@@@@@@@@@@@@@@@@@#***####%@@@@@@@@@@@@@@@@@@@@@@%****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%###############********************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**********************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%###%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%#########################%%%%*+++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################***********************###################################################################******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******####******************************************#################################################################################*************************************************************************************************************************************************####%%%###*******+*+++*****+*******######*************%@@@@@@@@@@@@@@@@@@@%*****###%@@@@@@@@@@@@@@@@@@@@@@#****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%################*******************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%@@%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%#+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################***********************###################################################################******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******####******************************************#################################################################################*************************************************************************************************************************************************####%%%###******++*+++++***+*******######***********+#@@@@@@@@@@@@@@@@@@@@#*****###@@@@@@@@@@@@@@@@@@@@@@%****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%#################*****************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############************************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%#+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################***********************###################################################################******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******#####*****************************************#################################################################################*************************************************************************************************************************************************###%%%%###******++*+++++++++******#######************%@@@@@@@@@@@@@@@@@@@@*******#%@@@@@@@@@@@@@@@@@@@@@@%***#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%##################***************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%#+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################***********************###################################################################******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******#####*****************************************##################################################################################************************************************************************************************************************************************###%%%%###******++*+++++++++******#######************@@@@@@@@@@@@@@@@@@@@%*******#%@@@@@@@@@@@@@@@@@@@@@@#**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%##################**************************************************************************#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############****************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%#**++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************###%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################***********************###################################################################******************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%******######*****************************************##################################################################################************************************************************************************************************************************************###%%%%###******++++++++++++******########**********#@@@@@@@@@@@@@@@@@@@@#*******#@@@@@@@@@@@@@@@@@@@@@@%***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%##################*************************************************************************#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############*******************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%#*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************###%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################************************###################################################################*******************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%******######******************************************########################################################################*#############*******************************************************************************************************************************************###%%%%###******++*++++++++*******########**********%@@@@@@@@@@@@@@@@@@@@********#@@@@@@@@@@@@@@@@@@@@@@%**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%####################***********************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*******************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%#**++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################************************###################################################################*******************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****######******************************************#######################################################################################******************************************************************************************************************************************###%%%%###*******+*++++++++*******########********+#@@@@@@@@@@@@@@@@@@@@%********%@@@@@@@@@@@@@@@@@@@@@@#*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%###################**********************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############********************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%#**++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************###%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################**********************###################################################################*******************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****######******************************************########################################################################################*****************************************************************************************************************************************###%%%%###*******+***++++*********########****+****%@@@@@@@@@@@@@@@@@@@@#********@@@@@@@@@@@@@@@@@@@@@@%**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%#####################*******************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*********************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************###%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################################################################################################################################################*********************###################################################################*******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****#######******************************************##########################################################################################***************************************************************************************************************************************###%%%%###************++**********########*******+*@@@@@@@@@@@@@@@@@@@@@********#@@@@@@@@@@@@@@@@@@@@@@%*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%######################*****************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***********************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%#*+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************###%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################################################################################################################################################*********************###################################################################*******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***########******************************************###############################################################################################**********************************************************************************************************************************###%%%%###***********************#########*******+#@@@@@@@@@@@@@@@@@@@@%********%@@@@@@@@@@@@@@@@@@@@@@*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%#######################***************************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***********************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%#*+*++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************##%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################################################################################################################################################*********************###################################################################*******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**#########*******************************************###############################################################################################*********************************************************************************************************************************###%%%%###***********************#########********%@@@@@@@@@@@@@@@@@@@@#******+#@@@@@@@@@@@@@@@@@@@@@@@*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%########################*************************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%**+*+***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************###%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################################################################################################################################################*********************###################################################################*******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############*******************************************###############################################################################################*********************************************************************************************************************************###%%%####***********************####%####*******#@@@@@@@@@@@@@@@@@@@@%********%@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%########################***********************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########***************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%**+*+****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************###%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################################################################################################################################################*********************###################################################################*******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############*******************************************###*###########################################################################################*********************************************************************************************************************************####%%####***********************####%####*******%@@@@@@@@@@@@@@@@@@@@%+*******@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%#########################*********************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########***************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%****+****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************##%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################################################################################################################################################********************####################################################################*******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############**********************************************#############################################################################################*****************************************************************************************#####**********************************###%%%####*****************+*****####%%####******@@@@@@@@@@@@@@@@@@@@@********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%###########################******************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############****************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%#*+*+*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*********************####################################################################******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########*************************************************##########################################################################################****************************************************************************************#######*********************************###%%%####*****************+*****###%%%####*****#@@@@@@@@@@@@@@@@@@@@%********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%############################***************************************************################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############******************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%#***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*********************####################################################################******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%%%%#####***************************************************########################################################################################**************************************************************************************#########********************************###%%%####***********************###%%%####*****%@@@@@@@@@@@@@@@@@@@@#+*******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%#############################************************************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############******************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%#*****+*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*********************#####################################################################*****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%%%%%#####*****************************************************#######################################################################*##############*************************************************************************************###########*******************************###%%%####***********************###%%%%###****#@@@@@@@@@@@@@@@@@@@@%*******+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%@%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%###############################********************************************###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############******************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%#*****+******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*********************#####################################################################*****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#####*******************************************************#####################################################################################***********************************************************************************#############******************************###%%%####*****************+****####%%%%###****%@@@@@@@@@@@@@@@@@@@@#+*******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%#################################********************####****************##*#####*############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############********************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%***+*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************##%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################**********************#####################################################################*****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#####**********************************************************###################################################################################**********************************************************************************##############*****************************###%%%####*****************+****###%%%%%%###***@@@@@@@@@@@@@@@@@@@@@*******+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%##################################**************######*****************#**********##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**********************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************##%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################**********************#####################################################################*****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%####****************************************************************##############################################################################***************#******************************************************************##############*****************************###%%%####********+*************###%%%%%%###**#@@@@@@@@@@@@@@@@@@@@#+*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%####################################********######*******************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############**********************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%#*****+*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************##%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################**********************#####################################################################*****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%####******************************************************************############################################################################**************###****************************************************************########%######*****************************###%%%####********+*************###%%%%%%###**%@@@@@@@@@@@@@@@@@@@@**+****+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%#######################################*#######**********************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%#*****+*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************##%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################**********************####################################################################******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#####************************************************************************########################################################################***********#####***************************************************************######%%%######*****************************####%%####**********************###%%%%%%###*#@@@@@@@@@@@@@@@@@@@@%*******+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%############################################***********************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*************************************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%#*+*+*+*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*++*****+******************##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################################################################################%%#####################################################################################################################**********************#####################################################################*****************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%######*************************************************************************#######################################################################***********######**************************************************************#####%%%%%######****************************###%%%####**********************###%%%%%%###*%@@@@@@@@@@@@@@@@@@@@*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##########################################*************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############**************************************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%****+*+*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++**********************##%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################################%%%%%###################################################################################################################**********************#####################################################################****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########****************************************************************************#######################################################################*******#######**************************************************************#####%%%%%%#####****************************###%%%####**********************##%%%%%%%####%@@@@@@@@@@@@@@@@@@@%*********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%######################################**************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%#*+**+*+*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++*+++**********************##%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################################%%%%%###################################################################################################################**********************#####################################################################****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########*****************************************************************************########################################################################****#######%#**************************************************************####%%%%%%%#####****************************###%%%####*******+*************###%%%%%%%####@@@@@@@@@@@@@@@@@@@@********+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%####################################**************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################****************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%#*+**+*+**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++********************##%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%%%%%%##################################################################################################################**********************#####################################################################****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########******************************************************************************#######################################################################***########%%#*************************************************************####%%%%%%%#####****************************###%%%####*******+*************###%%%%%%%%##%@@@@@@@@@@@@@@@@@@@%*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#################################***************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################****************************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%#*+**+*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************###%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%%%%%%##################################################################################################################**********************#####################################################################****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########******************************************************************************######################################################################*****#######%%#*************************************************************####%%%%%%%%####****************************###%%%####*******+*************###%%%%%%%%#%@@@@@@@@@@@@@@@@@@@@#+********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%###############################****************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################******************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%*****+**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************###%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%%%%%%%#################################################################################################################*********************######################################################################****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*#######********************************************************************************###################################################################*******#######%%#*************************************************************####%%%%%%%%####****************************####%%####*******+*************###%%%%%%%%#%@@@@@@@@@@@@@@@@@@@%*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*****************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################******************************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%#******+*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************###%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%%%%%%%#################################################################################################################*********************######################################################################****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****####********************************************************************************##################################################################********#######%@%************************************************************#####%%%%%%%%####****************************####%%####*******+*************##%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@#+********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*****************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################******************************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%#***+**++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%%%%%%###################################################################################################################********************######################################################################****************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***######*******************************************************************************###############################################################************##*###%@%#***********************************************************#####%%%%%%%%####****************************####%%####*********************##%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%**********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%########################******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*********************************************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%#***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*++******###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%%%%%%###################################################################################################################*******************#######################################################################****************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****####********************************************************************************##############################################################*************##*###%@%#***********************************************************#####%%%%%%%%####****************************####%%####********************###%%%%%%%%%@@@@@@@@@@@@@@@@@@@@#*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*********************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%*+***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################################%%%%%####################################################################################################################*******************#######################################################################****************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****####********************************************************************************##############################################################*************##*###%@%#***********************************************************#####%%%%%%%%#####***************************####%%####**************+*****###%%%%@%%%%@@@@@@@@@@@@@@@@@@@@**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################*********************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%#**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################################################################################%%%#####################################################################################################################*******************########################################################################***************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****####********************************************************************************#############################################################**************#**###%@%#***********************************************************#####%%%%%%%%#####***************************####%%####**************+*****###%%%%@@%%@@@@@@@@@@@@@@@@@@@@#+*******+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################********************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################**********************************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%#**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*******************########################################################################***************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****####********************************************************************************###########################################################******************####@@@%***********************************************************#####%%%%%%%%#####***************************####%%####**************+*****##%%%%@@@%@@@@@@@@@@@@@@@@@@@@@*********+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*********************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***********************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++**+**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*******************########################################################################***************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***#####********************************************************************************########################################################*********************####@@@%#**********************************************************#####%%%%%%%%%####***************************####%%####*******************###%%%@@@@@@@@@@@@@@@@@@@@@@@@@%**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########**********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################************************************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%#***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*******************########################################################################***************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***#####********************************************************************************########################################################*********************####@@@%#**********************************************************#####%%%%%%%%%####***************************####%%####*******************###%%%@@@@@@@@@@@@@@@@@@@@@@@@@*********+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################**************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%#***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*******************########################################################################***************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***#####********************************************************************************########################################################*********************####@@@%#**********************************************************#####%%%%%%%%%####***************************####%%####*******************###%%%@@@@@@@@@@@@@@@@@@@@@@@@%+*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+******%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************#########################################################################**************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****####********************************************************************************#####################################################******#*****************####@@@%#**********************************************************#####%%%%%%%%%####***************************####%%####******************###%%%%@@@@@@@@@@@@@@@@@@@@@@@@***********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************************************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%#*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****####********************************************************************************#####################################################************************####@@@%#**********************************************************#####%%%%%%%%%####***************************####%%####******************###%%%@@@@@@@@@@@@@@@@@@@@@@@@%***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%#*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***#####********************************************************************************#####################################################************************###%@@@@%**********************************************************#####%%%%%%%%%####***************************####%#####******************###%%%@@@@@@@@@@@@@@@@@@@@@@@@#**********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################****************************************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##%%%%%%%*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***####*********************************************************************************######################################################***********************###%@@@@%**********************************************************#####%%%%%%%%%####**************************#####%#####******************##%%%%@@@@@@@@@@@@@@@@@@@@@@@%***********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**#************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*****************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##%%%%%%#*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***###*********************************************************************************######################################################***********************###%@@@@%**********************************************************#####%%%%%%%%%####********************###########%#####*****************###%%%@@@@@@@@@@@@@@@@@@@@@@@@#***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################******************************************************************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**####*********************************************************************************#######################################################**********************###%@@@@%#*********************************************************#####%%%%%%%%%####*******************############%#####*****************###%%%@@@@@@@@@@@@@@@@@@@@@@@%***********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%##*##***********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*****************************************************************************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%#*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**####*********************************************************************************########################################################********************####%@@@@%#*********************************************************#####%%%%%%%%%####*******************############%#####****************###%%%%@@@@@@@@@@@@@@@@@@@@@@@#***********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#####**********************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*****************************************************************************************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%#**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**####*********************************************************************************########################################################*******#************####%@@@@%#*********************************************************#####%%%%%%%%%####*******************############%#####****************###%%%@@@@@@@@@@@@@@@@@@@@@@@%************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%#####**********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*****************************************************************************************************##*##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**####*********************************************************************************############################################################****************####%@@@@%#*********************************************************#####%%%%%%%%%####*******************############%#####****************###%%%@@@@@@@@@@@@@@@@@@@@@@@#***********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%######********************************************#######%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################******************************************************************************************************##*###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################******************##########################################################################************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*#####*********************************************************************************############################################################****************####%@@@@%#*********************************************************#####%%%%%%%%%####******************############%%%####***************####%%%@@@@@@@@@@@@@@@@@@@@@@@************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%####**********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*******************************************************************************************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%#************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################******************##########################################################################************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*#####**********************************************************************************###############%###########################################****************####%@@@@%#**********************************************************#####%%%%%%%%####******************############%%%####***************###%%%@@@@@@@@@@@@@@@@@@@@@@@#************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%####*********************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################********************************************************************************************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************+*****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################******************##########################################################################************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######**********************************************************************************###############%%##########################################****************####%@@@@%#**********************************************************#####%%%%%%%#####******************##########%%%%%####***************###%%%@@@@@@@@@@@@@@@@@@@@@@%************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%###%%%%###********************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################*********************************************************************************************************#*##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################******************##########################################################################************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######***********************************************************************************##############%%##########################################****************####%@@@@%#**********************************************************#####%%%%%%%#####******************#####%%%%%%%%%%####***************##%%%%@@@@@@@@@@@@@@@@@@@@@@#************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%#####%%%###*******************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################**********************************************************************************************************#*#*############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################******************##########################################################################************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######***********************************************************************************##############%%%#########################################****************####%@@@@%#**********************************************************#####%%%%%%%#####******************#####%%%%%%%%%%####**************###%%%@@@@@@@@@@@@@@@@@@@@@@%*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%###########********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################****************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*****************###########################################################################************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######***********************************************************************************##############%%%#########################################****************####@@@@@%#**********************************************************#####%%%%%%%#####******************#####%%%%%%%%%%%###**************###%%%@@@@@@@@@@@@@@@@@@@@@@#*************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%##########********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*****************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*****************###########################################################################************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######***********************************************************************************##############%%@%########################################***************#####@@@@@%#***********************************************************####%%%%%%%#####******************#####%%%%%%%%%%%###**************###%%%@@@@@@@@@@@@@@@@@@@@@@*************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@%%%%###########*******************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################******************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%##*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*****************############################################################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######**********************************************************************************###############%@@%####################################*********************###@@@@@%#***********************************************************####%%%%%%%#####******************####%%%%%%%%%%%%###*************###%%%@@@@@@@@@@@@@@@@@@@@@@#*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%###########********************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*******************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%####*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************+*********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*****************############################################################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######**********************************************************************************###############%@@%####################################*********************###@@@@@%#***********************************************************####%%%%%%%#####******************####%%%%%%%%%%%%###*************###%%%@@@@@@@@@@@@@@@@@@@@@%**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@%%%%##########********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################********************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@%%####*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++***********************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*****************############################################################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######**********************************************************************************###############%@@@%################################************************###@@@@@%#***********************************************************#####%%%%%%#####******************####%%%%%%%%%%%%###*************###%%%@@@@@@@@@@@@@@@@@@@@@#**************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@%%%%###########*******************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################**********************************************************************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%@%#####**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************+*******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################******************############################################################################***********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######*********************************************************************************################%@@@%###############################***********************#*##%@@@@@%#***********************************************************#####%%%%%%#####******************####%%%%%%%%%%%%%##*************###%%%@@@@@@@@@@@@@@@@@@@@%**************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%##########********************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################***********************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@%%######**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************+****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################******************############################################################################***********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####**********************************************************************************################%@@@%###############################***********************#*##%@@@@@%#***********************************************************#####%%%%%######******************####%%%%%%%%%%%%%##************###%%%%@@@@@@@@@@@@@@@@@@@@#**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@%%%%%%###########*******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################************************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@%#######**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************+***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################******************############################################################################***********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####*********************************************************************************#################%@@@@%###############################*******************#**#*##%@@@@@%#***********************************************************######%%%%######******************####%%%%%%%%%%%%%##************###%%%%@@@@@@@@@@@@@@@@@@@%***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%%%%%###########*******************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*************************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%#######**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%#########################################################################################################################******************############################################################################***********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####*********************************************************************************#################%@@@@%##################################****************#**#*##%@@@@@%#***********************************************************########%######*******************####%%%%%%%%%%%%%##************###%%%@@@@@@@@@@@@@@@@@@@@#***************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%@%%%%##########*******************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################***************************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%#########******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%#######################################################################################################################*******************############################################################################***********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####*********************************************************************************#################%@@@@%##################################****************#**#*##%@@@@@%#***********************************************************###############*******************####%%%%%%%%%%%%###************###%%%@@@@@@@@@@@@@@@@@@@%***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%@%@%%%%###########*******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################****************************************************************************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%##########******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%######################################################################################################################******************#############################################################################**********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####*******************************************************************************###################@@@@%%###################################***************#**###%@@@@@%#************************************************************##############*******************####%%%%%%%%%%%%###************###%%%@@@@@@@@@@@@@@@@@@@#***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@%%%%%%%%%##########*******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*****************************************************************************************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%###########**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%######################################################################################################################******************#############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####*******************************************************************************###################@@@@@%###################################******************###%@@@@@%#************************************************************##############*******************####%%%%%%%%%%%%###************##%%%@@@@@@@@@@@@@@@@@@@%#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@%%%%%%###########******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*******************************************************************************************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%###########**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%#######################################################################################################################*****************#############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####*******************************************************************************###################@@@@@%####################################****************####%@@@@@%#*************************************************************#############*******************####%%%%%%%%%%%%###***********###%%%@@@@@@@@@@@@@@@@@@@%****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%###########******************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################*********************************************************************************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%############***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%#######################################################################################################################*****************#############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####*******************************************************************************###################@@@@@%####################################****************####%@@@@@%#*************************************************************############********************####%%%%%%%%%%%%###***********###%%%@@@@@@@@@@@@@@@@@@%#***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%###########******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################**********************************************************************************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%############************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%%######################################################################################################################****************##############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####*******************************************************************************###################@@@@@%######################################************######%@@@@@%#**************************************************************###########********************####%%%%%%%%%%%%%###**********###%%%@@@@@@@@@@@@@@@@@@%#***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%###########******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################************************************************************************************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%#############*************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%%######################################################################################################################****************##############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####********************************************************************************##################@@@@@@%#####################################************######@@@@@@%#**************************************************************##########*********************####%%%%%%%%%%%%%###**********###%%%@@@@@@@@@@@@@@@@@%##***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##########******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################**************************************************************************************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%#############***********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%%######################################################################################################################****************##############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####********************************************************************************##################@@@@@@%######################################************#####@@@@@@%#****************************************************************######***********************####%%%%%%%%%%%%%###*********####%%@@@@@@@@@@@@@@@@@@%##***************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%###########******************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################**************************************************************************************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%###############***************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%%%#####################################################################################################################****************##############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####********************************************************************************##################@@@@@@%######################################************#####@@@@@@%#*****************************************************************####***********************#####%%%%%%%%%%%%%###*********###%%%@@@@@@@@@@@@@@@@@@###***************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##########******************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*****************************************************************************************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%#################*************************************************************************++++++++++++++++++++++++++++++++********++++++++++++++++**********************************************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%%%######################################################################################################################**************###############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####********************************************************************************##################@@@@@@%###*##*###############################**#********#*####@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###*********###%%%@@@@@@@@@@@@@@@@@%%##**************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#########******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################******************************************************************************************************************************************#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%###################***********************************************************************************************************************************************+****************************************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%%%%%######################################################################################################################*************################################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####*********************************************************************************################%@@@@@@%###*##################################**#********#*####@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###*********###%%%@@@@@@@@@@@@@@@@@%####*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%##########*****************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################******************************************************************************************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%####################**************************************************************************************************************************************************************************************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%%%%%######################################################################################################################*************################################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####*********************************************************************************################%@@@@@@@%##*##################################***********#*###%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###********####%%%@@@@@@@@@@@@@@@@%%####*************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%##########*****************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################********************************************************************************************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%######################************************************************************************************************************************************************************************************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%%%%%%######################################################################################################################************#################################################################################********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####*********************************************************************************################%@@@@@@@%#*###################################***********#*###%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###********####%%@@@@@@@@@@@@@@@@@%%####*************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##########****************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################**********************************************************************************************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%#######################*********************************************************************************************************************************************************************************************************************************************######%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%%%%%%######################################################################################################################************#################################################################################********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###**********************************************************************************################%@@@@@@@%#*###################################*************###%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###********####%%@@@@@@@@@@@@@@@@@%%####************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%##########****************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################***********************************************************************************************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%########################*******************************************************************************************************************************************************************************************************************************************#######%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#########################################################################################%%%%%%%######################################################################################################################************#################################################################################*******************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###************************************************************************************##############%@@@@@@@%#*###################################*************###%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###********####%%@@@@@@@@@@@@@@@@%%%###************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%###########****************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*************************************************************************************************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%########################******************************************************************************************************************************************************************************************************************************************#######%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#########################################################################################%%%%%%%#######################################################################################################################***********#################################################################################*******************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###************************************************************************************##############%@@@@@@@%#####################################*************###%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###********####%%@@@@@@@@@@@@@@@@%%%###***********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############***************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################**************************************************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%###########################***************************************************************************************************************************************************************************************************************************************########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%%%%%#######################################################################################################################***********#################################################################################*******************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###*************************************************************************************#############%@@@@@@@@%##*#*################*##############*************###%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###********####%@@@@@@@@@@@@@@@@%%%%###********###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############***************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################***********************************#***************************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#############################************************************************************************************************************************************************************************************************************************************#########%%%%%%%%%%%%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################################%%%%%########################################################################################################################***********################################################################################*******************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###****************************************************************************************##########%@@@@@@@@%#*################################***********##*####%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%####*******####%@@@@@@@@@@@@@@@@%%%%###********##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###########***************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*************************************#***************************************************************************************************************################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%##############################**********************************************************************************************************************************************************************************************************************************#########%%%%@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################################################################################%%%%########################################################################################################################***********################################################################################*******************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###****************************************************************************************#########%%@@@@@@@@%##################################**************####%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%####******####%%@@@@@@@@@@@@@@@%%%%####********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@%%%%%@%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############**************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################**************************************##**************************************************************************************************************###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%################################********************************************************************************************************************************************************************************************************************************#########%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################**********#################################################################################*******************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###******************************************************************************************#######%@@@@@@@@@%#####*#####################*********************####%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%####******####%%@@@@@@@@@@@@@@@%%%%####********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############**************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################*********************************************#**************************************************************************************************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%#################################*****************************************************************************************************************************************************************************************************************************###########%@%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################********###################################################################################*******************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###******************************************************************************************#######%@@@@@@@@@%#####*####################**********************####@@@@@@@%#********************************************************************************************####%%%%%%%%%%%%%%#####****#####%@@@@@@@@@@@@@@@%%%%%####*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################**************************************************##*************************************************************************************************************#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%###################################***************************************************************************************************************************************************************************************************************************###########%%@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################################################################################################################*******************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##*******************************************************************************************#######%@@@@@@@@@%#####*####################**********************####@@@@@@@%#********************************************************************************************####%%%%%%%%%%%%%%##############%@@@@@@@@@@@@@@@%%%%#####******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############**************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################******************************************************##*************************************************************************************************************###########################%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%####################################************************************************************************************************************************************************************************************************************************############%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##############################################################################################################################################################################################################################################**********#**########################################################*******************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##*******************************************************************************************######%%@@@@@@@@@@#####*###################**********************####%@@@@@@@%#********************************************************************************************####%%%%%%%%%%%%%%#############%%@@@@@@@@@@@@@@%%%%#####******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%############*************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***********************************************************##***********************************************************************************************************######################################%%%#%%%%%%%%%%%%%%%%%@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%######################################**********************************************************************************************************************************************************************************************************************############%%@%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################################################################################################################################################################################################################################********************###################################################*******************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******************************************************************************************#######%@@@@@@@@@@@######################*************************####%@@@@@@@%#********************************************************************************************####%%%%%%%%%%%%%%#############%@@@@@@@@@@@@@@@%%%%#####*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%###########*************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################**************************************************************###**********************************************************************************************************################################################%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################*******************************************************************************************************************************************************************************************************************##############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################################################################################################################################################################################################################################**********************#################################################*******************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******************************************************************************************#######%@@@@@@@@@@@######################*************************#*##%@@@@@@@%#********************************************************************************************####%%%%%%%%%%%%%%############%%@@@@@@@@@@@@@@@%%%#####*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%##########*************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****************************************************************###**********************************************************************************************************#################################################%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################****************************************************************************************************************************************************************************************************************###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################***************************###############################################********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************************########%@@@@@@@@@@@%###################****************************###%@@@@@@@%#***************#****************************************************************************####%%%%%%%%%%%%%%%######%%%#%%@@@@@@@@@@@@@@@%%######*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@%%@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%%#########*************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%################*******************************************************************#####*********************************************************************************************************#################################################%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################************************************************************************************************************************************************************************************************************#################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################****************************##############################################********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************************########%@@@@@@@@@@@%################*******************************###%@@@@@@@%#***************#****************************************************************************####%%%%%%%%%%%%%%%###%%%%%%%%%@@@@@@@@@@@@@@@%######*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%###############******************************************************************#########********************************************************************************************************###################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%############################################**********************************************************************************************************************************************************************************************************##################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################****************************##############################################********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************************************************************########%%@@@@@@@@@@@%#############**********************************###%@@@@@@@%#***************#****************************************************************************####%%%%%%%%%%%%%%%##%%%%%%%%%%@@@@@@@@@@@@@@%%######****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@%%########************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##############********************************************************************###########*******************************************************************************************************###################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%###############################################*****************************************************************************************************************************************************************************************************####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################*****************************#############################################********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************************************************************########%@@@@@@@@@@@@%##*##########**********###*******************#*###%@@@@@@@%#***************#****************************************************************************####%%%%%%%%%%%%%%%%#%%%%%%%%%@@@@@@@@@@@@@@@%######****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######***********************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#############*********************************************************************#############*****************************************************************************************************###################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%#################################################************************************************************************************************************************************************************************************************######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################******************************############################################********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***************************************************************************************#########%@@@@@@@@@@@@%##*#############*****######********************###%@@@@@@@%#***************#****************************************************************************####%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@######****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@%@@%%#######**********************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%#############**********************************************************************###############****************************************************************************************************###################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%######################################################*************************************************************************************************************************************************************************************#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################******************************###########################################*********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***************************************************************************************########%%@@@@@@@@@@@@%%#*########################********************###@@@@@@@@%#***************#****************************************************************************####%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@####*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#####**********************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%#############***********************************************************************################***************************************************************************************************###################################################%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################**********************************************************************************************************************************************************************************###############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################********************************#########################################*********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************#########%@@@@@@@@@@@@@@%###*#######################*****************#*###@@@@@@@@%****************#****************************************************************************####%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%###******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#####*********************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%#############***********************************************************************##################**************************************************************************************************#################################################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################*****************************************************************************************************************************************************************##################################%###%###%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################********************************########################################**********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**************************************************************************************########%%@@@@@@@@@@@@@@%###*#######################*****************#*###@@@@@@@@%****************#****************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@##*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####*********************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##############***********************************************************************###################*************************************************************************************************################################################%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################*************************************************************************************************************************************************************##################################%%%%#%%%##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#########################################################################################################################################################################################################################################********************************#######################################**********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**************************************************************************************########%%@@@@@@@@@@@@@@%#*##########################****************#*##%@@@@@@@@%****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@#*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###********************************#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%##############***********************************************************************#####################***********************************************************************************************###############################################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#############################################################********************************************************************************************************************************************************################################%%%%%%%%%%#%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#########################################################################################################################################################################################################################################*********************************######################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*************************************************************************************########%%@@@@@@@@@@@@@@@%#*#########################*****************####%@@@@@@@@%****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%##%#***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###*******************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%###############***********************************************************************#######################*********************************************************************************************#############################################%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##############################################################****************************************************************************************************************************************************#################################%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#########################################################################################################################################################################################################################################**********************************####################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************########%%@@@@@@@@@@@@@@@%#*#######################*******************####%@@@@@@@@#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@##%%%**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##******************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%###############***********************************************************************#########################*******************************************************************************************###########################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%################################################################******************************************************************************************************************************************######################################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#########################################################################################################################################################################################################################################***********************************###################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************#######%%@@@@@@@@@@@@@@@@%#########################*******************####%@@@@@@@@#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%@%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###****************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%##############************************************************************************############################*****************************************************************************************########################################%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################***********************************************************************************************************************************#######################################%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################################################################################################################################################################***********************************##################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************#######%%@@@@@@@@@@@@@@@@%########################********************####%@@@@@@@@#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##**************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%############**************************************************************************##############################****************************************************************************************###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################**######################************************************************************************################################################################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################################################################################################################################################################################**********************************#################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************######%%@@@@@@@@@@@@@@@@@%####################**#*********************####%@@@@@@@%#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%###***********************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###########****************************************************************************################################*************************************************************************************#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################************************#############********##############################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################################################################################################################################################################################**********************************#################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************######%%@@@@@@@@@@@@@@@@@%####################*************************###%@@@@@@@%#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####********************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%############***************************************************************************##################################************************************************************************************###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################################################################################################################################################################################**********************************#################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************#####%%%@@@@@@@@@@@@@@@@@%####################*************************###%@@@@@@@%#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@%@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%######****************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###########***************************************************************************#####################################**********************************************************************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#############################################################################################################################################################################################################################################*******************************##################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%************************************************************************************#####%%@@@@@@@@@@@@@@@@@@%##################***************************###@@@@@@@@%#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@%@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#########************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%############***************************************************************************#######################################*****************************########******************************************#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#############################################################################################################################################################################################################################################******************************###################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*************************************************************************************####%%@@@@@@@@@@@@@@@@@@%##################**************************####@@@@@@@@@#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#################***##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###########***************************************************************************##########################################**************************##########*****************************************########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################################################################################################################***************************###################################***********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*************************************************************************************####%@@@@@@@@@@@@@@@@@@@%##################**************************####@@@@@@@@@%****************##***********************************************#####***********************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%###########**************************************************************************############################################***********************#############***************************************#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**#################################################################################################################################################################################################################################################*******************##*#####################################**********************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************************************************##%%@@@@@@@@@@@@@@@@@@@@##################**************************####@@@@@@@@@%#***************##*********************************************#########*********************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@%%%%%%%%%%%%###########*************************************************************************################################################*******************##############**************************************######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***########################################################################################################%%%%#####################################################################################################################################*****************#########################################**********************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************************************************##%@@@@@@@@@@@@@@@@@@@@@################****************************###%@@@@@@@@@%#***************##********************************************############*******************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@%%%%%%%%%%%%###########************************************************************************####################################################***************################************************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****####################*################################################################################%%%%%%%##############################################################################################################################################################################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@##*#########********************************###%@@@@@@@@@%#***************##*******************************************#############*******************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%%%%%%%%%%%#########**************************************************************************###################%%%################################******########################**********************************###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********############**********##########################################################################%%%%%%%%##############################################################################################################################################################################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@##*#####************************************###%@@@@@@@@@%%#**************##******************************************###############******************####%%%%%%%%%@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%#######**************************************************************************#####################%@%%%##############################################################********************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************###***********##########################################################################%%%%%%%%##############################################################################################################################################################################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@##*#####*************************************##%@@@@@@@@@%%#**************##******************************************################*****************####%%%%%%%%%@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@%%%%%%%%%######***************************************************************************####################%%%%@@%%#############################################################******************************################%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#######%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************###########################################################################%%%%%%%%%############################################################################################################################################################################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************%@@@@@@@@@@@@@@@@@@@@@@%#*##***************************************###%@@@@@@@@@@%#**************#%*****************************************#################*****************####%%%%%%%%@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@%%%%%%%%%%#######********##***************************************************************####################%%%%@%@@@%%########################%%%%%%%#####################%%%%########*************************##############%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%##%#%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*******************************##########################################################################%%%%%%%%%############################################################################################################################################################################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%**************************************************************************************%@@@@@@@@@@@@@@@@@@@@@@%#******************************************###%@@@@@@@@@@%#**************###****************************************#################*****************####%%%%%%%%@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@%%%%%%%%%%#####**********##*************************************************************#####################%%@%%%%@@@@%%%#################%%%%%%%%%%%%%%###################################******************##############%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************##########################################################################%%%%%%%############################################################################################################################################################################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**************************************************************************************%@@@@@@@@@@@@@@@@@@@@@@%#******************************************###@@@@@@@@@@@%%#**************##***************************************#######%%%%%######*****************####%%%%%%%%@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@%%%%%%%%%%####**********####***********************************************************#####################%%@@%%@%@@@@@@@%%########%%%%%%%%%%%%%%%%%%%%%%%%###############################******************##############%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################%%########################%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##%%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************##########################################################################%%%%%%#############################################################################################################################################################################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**************************************************************************************%@@@@@@@@@@@@@@@@@@@@@@%#******************************************###@@@@@@@@@@@%%#**************##***************************************######%%%%%%%#####*****************####%%%%%%%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@%%%%%%%%%%####**********####**********************************************************#####################%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################***************###############%%%%@@@%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################################%%%%%####################%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%###########################################%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************###########################################################################%%%%%#############################################################################################################################################################################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************************************************%@@@@@@@@@@@@@@@@@@@@@@%#******************************************##%@@@@@@@@@@@%%#**************##***************************************#####%%%%%%%%######****************####%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@%%%%%%%%%%###**********######********************************************************#####################%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################********#################%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################%@%%%%%%################%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************############################################################################%%%%#############################################################################################################################################################################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************************************************%@@@@@@@@@@@@@@@@@@@@@@%#******************************************##%@@@@@@@@@@@%%#**************##***************************************####%%%%%%%%%%#####****************####%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@%%%%%%%%%%###**********######******************************************************######################%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%%%%@%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################%@@@%%%%%%%%############%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************############################################################################%%##############################################################################################################################################################################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************************************************%@@@@@@@@@@@@@@@@@@@@@@%#******************************************##%@@@@@@@@@@@%%#**************##**************************************#####%%%%%%%%%%#####****************####%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%####################%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%@@@@@@@@@@@@@@%%%%%%%%%%####********########***************************************************#######################%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%@%%%@@@%%%@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################%%@@@@@%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************###########################################################################################################################################################################################################################################################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************************************************%@@@@@@@@@@@@@@@@@@@@@@%#******************************************##%@@@@@@@@@@@@%#**************##**************************************#####%%%%%%%%%%#####****************####%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##################%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%@@@@@@@@@@@@@@%%%%%%%%%%%####*******########*************************************************########################%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%#######################################%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
************************************#################*******#################################################################################################################################################################################################################################################***********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************************************************%%@@@@@@@@@@@@@@@@@@@@@%#******************************************##%@@@@@@@@@@@@%#**************##*************************************######%%%%%%%%%%#####***************#####%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%###############%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%####*****##########**********************************************#########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%#%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
************************************###############*********#################################################################################################################################################################################################################################################***********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@%#*****************************************###%@@@@@@@@@@@@%#**************##*************************************#####%%%%%%%%%%%#####***************#####%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%############%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@%%%%%%#%%%%#####***###########******************************************###########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************###########**************###############################################################################################################################################################################################################################################***********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@%#*****************************************###%@@@@@@@@@@@@%%#*************##*************************************#####%%%%%%%%%%%#####***************####%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%###%%%%%%%%%@@@@%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@%%%%%####%%####################**************************************############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************##########*******************##########################################################################################################################################################################################################################################***********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@%#****************************************####%@@@@@@@@@@@@%%#*************##*************************************#####%%%%%%%%%%%#####***************####%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%%%%%%%@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@%%%%%###########################*********************************###############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***********************************************************************************##########################################################################################################################################################################################################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@%#****************************************####@@@@@@@@@@@@@%%#*************###************************************#####%%%%%%%%%%%#####***************####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@%%%%%%%%%@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@%%%%%##################################******************##################################%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************************************************************************************#####################################################################################################################################################################################################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@%#****************************************###%@@@@@@@@@@@@@@%#*************###************************************####%%%%%%%%%%%%#####***************####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#################################################################################%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%@%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*****************************************************************************************####################################################################################################################################################################################################################*********************************##%@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@%#****************************************###%@@@@@@@@@@@@@@%#*************#%#***********************************#####%%%%%%%%%%%%#####***************####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############################################################################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%@%%%%@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*******************************************************************************************##################################################################################################################################################################################################################*********************************##%@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@%#****************************************###%@@@@@@@@@@@@@@%#*************#%#***********************************#####%%%%%%%%%%%%#####***************####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#################################################################%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@%%%%@%%%%%%%%%%%%%%%%%@%%%%%%@@%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*******************************************************************************************##################################################################################################################################################################################################################*********************************##%@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##***********************************************************************************#%@@@@@@@@@@@@@@@@@@@@@%#****************************************###%@@@@@@@@@@@@@@%#**************##***********************************#####%%%%%%%%%%%%%#####**************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@%%%%@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@%%%%%%%%%%%%%@@@%@@%%%@%%@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************************************#################################################################################################################################################################################################################********************************###%@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##***********************************************************************************##@@@@@@@@@@@@@@@@@@@@@%#****************************************###%@@@@@@@@@@@@@@%#**************##***********************************#####%%%%%%%%%%%%%#####**************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@%%@@%%@@@@@@%%@%@@@@%@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************************************#################################################################################################################################################################################################################*******************************####%@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************#%@@@@@@@@@@@@@@@@@@@@%#****************************************###%@@@@@@@@@@@@@@%#**************##***********************************####%%%%%%%%%%%%%%#####**************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************################################################################################################################################################################################################################*******************************####%@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##***********************************************************************************#%@@@@@@@@@@@@@@@@@@@@%#****************************************###@@@@@@@@@@@@@@@%#**************##**********************************#####%%%%%%%%%%%%%%#####**************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@@@%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********####*********************************************************************************###########*####################################################################################################################################################################################################******************************#####%@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##***********************************************************************************#%@@@@@@@@@@@@@@@@@@@@%#***************************************####@@@@@@@@@@@@@@@%#**************##**********************************#####%%%%%%%%%%%%%%#####**************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********#####********************************************************************************##########**####################################################################################################################################################################################################****************************#######%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##***********************************************************************************#%@@@@@@@@@@@@@@@@@@@@%#***************************************###%@@@@@@@@@@@@@@@%#**************##**********************************#####%%%%%%%%%%%%%%#####**************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%@@@@@@@@%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********#####********************************************************************************#########***####################################################################################################################################################################################################*******************###******#######%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###**********************************************************************************#%@@@@@@@@@@@@@@@@@@@@%****************************************###%@@@@@@@@@@@@@@@@##*************#%**********************************#####%%%%%%%%%%%%%%#####**************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********#####********************************************************************************#########***####################################################################################################################################################################################################*******************###******#######%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###**********************************************************************************##@@@@@@@@@@@@@@@@@@@%%****************************************###%@@@@@@@@@@@@@@@@##*************#%#*********************************####%%%%%%%%%%%%%%%#####**************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********########*****************************************************************************#########****###############################%%%%%###############################################################################################################################################################*******************##***#*#########@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##**********************************************************************************##%@@@@@@@@@@@@@@@@@@@###***********************************#**###%@@@@@@@@@@@@@@@%%#*************#%#*********************************####%%%%%%%%%%%%%%%#####**************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%@@@@@@@@@@@@@@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********########*****************************************************************************###########*################################%%%%%###############################################################################################################################################################*******************######*########%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###*********************************************************************************##%@@@@@@@@@@@@@@@@@@%###*********************************#*#**###%@@@@@@@@@@@@@@@%%#*************###*********************************####%%%%%%%%%%%%%%%#####**************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********########****************************************************************************############*###############################%%%%%%##%############################################################################################################################################################******************#%##############%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##*********************************************************************************##%@@@@@@@@@@@@@@@@@@%#***********************************#*#**###%@@@@@@@@@@@@@@@%%#**************##*********************************####%%%%%%%%%%%%%%%#####**************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@@@@%%%%%%%%%%%%%%@@@@@%%%%@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********########**###***********************************************************************###########################################%%%%%%%##%############################################################################################################################################################******************#%##############%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********************************************************************************###@@@@@@@@@@@@@@@@@@%#***********************************#***####@@@@@@@@@@@@@@@@@%#**************##*********************************####%%%%%%%%%%%%%%%#####**************####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********##############**********************************************************************##########################################%%%%%%%%%%%############################################################################################################################################################******************#%##############%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##*********************************************************************************##@@@@@@@@@@@@@@@@@@%##**************************************####@@@@@@@@@@@@@@@@@%#**************##*********************************####%%%%%%%%%%%%%%%#####**************####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********##############**********************************************************************##########################################%%%%%%%%%%#############################################################################################################################################################******************#%%#############%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********************************************************************************##%@@@@@@@@@@@@@@@@@%#***************************************####@@@@@@@@@@@@@@@@@%#**************##*********************************####%%%%%%%%%%%%%%%#####**************####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********###############********************************************************************########################################%%%%%%%%%%%%%#############################################################################################################################################################******************#%%#############%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##********************************************************************************##%@@@@@@@@@@@@@@@@@%#*#*************************************###%@@@@@@@@@@@@@@@@@%#**************###********************************####%%%%%%%%%%%%%%%####***************####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********###############********************************************************************########################################%%%%%%%%%%%%%#############################################################################################################################################################******************#@%#############%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#********************************************************************************##%@@@@@@@@@@@@@@@@@%#*#*************************************###%@@@@@@@@@@@@@@@@@%#**************#%#*******************************#####%%%%%%%%%%%%%%%####***************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%@%%%@%%%%%%%%@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********#################******************************************************************########################################%%%%%%%%%%%%%#############################################################################################################################################################*****************#%@%#############%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#********************************************************************************#%@@@@@@@@@@@@@@@@%#**************************************#*###%@@@@@@@@@@@@@@@@@%#***************%#*******************************#####%%%%%%%%%%%%%%%####**************####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%@@%@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********#################*****************************************************************#########################################%%%%%%%%%%%%%#############################################################################################################################################################****************##%@@#############%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#********************************************************************************##@@@@@@@@@@@@@@@@%#****************************************###%@@@@@@@@@@@@@@@@@%#***************##*******************************#####%%%%%%%%%%%%%%%#####**************####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%#@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********#################*****************************************************************#########################################%%%%%%%%%%%%%#############################################################################################################################################################***************###%@@%############%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*******************************************************************************##%@@@@@@@@@@@@@@@%#****************************************###@@@@@@@@@@@@@@@@@@%#***************##*******************************#####%%%%%%%%%%%%%%%#####**************###%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%##@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********#################*****************************************************************########################################%%%%%%%%%%%%%##############################################################################################################################################################**************####%@@%############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*******************************************************************************##%@@@@@@@@@@@@@@%%#****************************************###@@@@@@@@@@@@@@@@@@%#***************##*******************************####%%%%%%%%%%%%%%%%#####**************###%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%#*%@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********##################****************************************************************#######################################%%%%%%%%%%%%%%%%############################################################################################################################################################************######%@@@###########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#******************************************************************************##%@@@@@@@@@@@@@@%%#****************************************###@@@@@@@@@@@@@@@@@@%#***************#%*******************************####%%%%%%%%%%%%%%%%#####**************###%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@%#**%@@@@@@@@@@@@@@@@%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********##################***************************************************************#######################################%%%%%%%%%%%%%%%%%############################################################################################################################################################**********########%@@@%##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******************************************************************************##%@@@@@@@@@@@@@@%##***************************************###%@@@@@@@@@@@@@@@@@@%#***************#%*******************************####%%%%%%%%%%%%%%%%#####**************###%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@#***%@@@@@@@@@@@@@@@@%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********##################***************************************************************#######################################%%%%%%%%%%%%%%%%%%############################################################################################################################################################*******##########%@@@%##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%******************************************************************************###@@@@@@@@@@@@@@%#****************************************###%@@@@@@@@@@@@@@@@@@%#***************###******************************####%%%%%%%%%%%%%%%%#####*************###%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%****@@@@@@@@@@@@@@@@@%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********##################***************************************************************######%################################%%%%%%%%%%%%%%%%%%############################################################################################################################################################******###########%@@@%##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#******************************************************************************##%@@@@@@@@@@@@@%#****************************************###%@@@@@@@@@@@@@@@@@@%##***************##******************************####%%%%%%%%%%%%%%%%#####**************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%*****@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******####################***************************************************************######%%###############################%%%%%%%%%%%%%%%%%%%############################################################################################################################################################**##############%@@@@##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************###%@@@@@@@@@@@@@%##*#*************************************###@@@@@@@@@@@@@@@@@@@%%#***************##******************************####%%%%%%%%%%%%%%%%#####**************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@#****#@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******####################***************************************************************######%%##############################%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################%@@@@%#########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******************************************************************************##%@@@@@@@@@@@@%%*****************************************###@@@@@@@@@@@@@@@@@@@%%#***************##******************************####%%%%%%%%%%%%%%%%#####*************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@#*****#@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******####################***************************************************************#####%%%%#############################%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################%@@@@%#########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******************************************************************************##%@@@@@@@@@@@@%#***************************************#*###@@@@@@@@@@@@@@@@@@@%%#***************##*****************************#####%%%%%%%%%%%%%%%%%####************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%******#@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****######################**************************************************************######%%%%############################%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################%@@@@@%#########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%******************************************************************************##%@@@@@@@@@@@@%#**************************************##*##%@@@@@@@@@@@@@@@@@@@%%#***************##*****************************#####%%%%%%%%@%%%%%%%%####***********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%#******#@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***#######################**************************************************************######%%%%############################%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################%@@@@@%%########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************************************************************************##%@@@@@@@@@@@@%#**************************************##*##%@@@@@@@@@@@@@@@@@@@%%#***************###****************************####%%%%%%%@%@%%%%%%%%####**********#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*******#@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**########################**************************************************************#####%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################%@@@@@@%########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************###@@@@@@@@@@@%%***************************************#*###%@@@@@@@@@@@@@@@@@@@%%#****************##****************************####%%%%%%@@@@@%%%%%%%####*********#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**########################**************************************************************#####%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################################################%#%%@@@@@@%########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************###%@@@@@@@@@@%#*****************************************###%@@@@@@@@@@@@@@@@@@@%%#****************##****************************####%%%%%%@@@@@@%%%%%%####********#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%********%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**########################**************************************************************#####%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################%%%%%@@@@@@%########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************#*#%@@@@@@@@@@%#*****************************************###@@@@@@@@@@@@@@@@@@@@%%#****************##****************************####%%%%%%@@@@@@%%%%%%####*****#**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%#********%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**########################**************************************************************####%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################%%%#%%@@@@@@%%#######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******************************************************************************#%@@@@@@@@@%%****************************************#####@@@@@@@@@@@@@@@@@@@@@%#*****************#****************************####%%%%%@@@@@@@@%%%%%%###*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**########################*************************************************************#####%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################%%%%%%%%%@@@@@@%%#######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*******************************************************************************#%@@@@@@@@@%#*****************************************####@@@@@@@@@@@@@@@@@@@@@%#*****************#***************************#####%%%%@@@@@@@@@@%%%%#####*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##********%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*#########################************************************************************######%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################%%%%%%%%%%%@@@@@@@%####%##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%****************************************************************************#*##%%@@@@@@@@%#*****************************************###%@@@@@@@@@@@@@@@@@@@@@%#*****************#***************************####%%%%%@@@@@@@@@@%%%%####****#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##********%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################************************************************************######%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################%%%%%%%%%%%@@@@@@@%####%##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************###%@@@@@@@@%******************************************###%@@@@@@@@@@@@@@@@@@@@@%#*********************************************####%%%%@@@@@@@@@@@@%%%%####***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##********%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################************************************************************#####%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################%%%%%%%%%%%%@@@@@@@%%%##%##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******************************************************************************#%@@@@@@@@#******************************************###%@@@@@@@@@@@@@@@@@@@@@%#********************************************#####%%%%@@@@@@@@@@@@%%%%####**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%##********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################************************************************************#####%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################%%%%%%%%%%%%%%%@@@@@@@@%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******************************************************************************#%@@@@@@@%##*****************************************###%@@@@@@@@@@@@@@@@@@@@@%#********************************************####%%%%@@@@@@@@@@@@@@%%%#####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################************************************************************#####%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################%%%%%%%%%%%%%%%%@@@@@@@@%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******************************************************************************#%%@@@@@@%#******************************************###@@@@@@@@@@@@@@@@@@@@@@%#********************************************####%%%@@@@@@@@@@@@@@@%%%####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################***********************************************************######%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#********************************************************************************#%@@@@%@##******************************************###@@@@@@@@@@@@@@@@@@@@@@%#********************************************####%%%@@@@@@@@@@@@@@@%%%%##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@%%%%@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*##########################**********************************************************######%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################%%%%%%%%%%%%%%#%%@@@@@@@@@%%#%##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%********************************************************************************#%@@@@@%##*****************************************####@@@@@@@@@@@@@@@@@@@@@@%#*******************************************####%%%%@@@@@@@@@@@@@@@@%%%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%#*#******%@@@@@@@@@@@@@@@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################*********************************************************#####%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################%%%%%%%%%%%%%%%%%@@@@@@@@@%%#%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************************************************************************#*##%@@@@%#******************************************###%@@@@@@@@@@@@@@@@@@@@@@%#******************************************#####%%%@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%####*****%@@@@@@@@@@@@@@@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################********************************************************######%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################%%%%%%%%%%%%%%%%%%@@@@@@@@@@%#%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************#**#**#%%@@%%#******************************************###%@@@@@@@@@@@@@@@@@@@@@@%#******************************************####%%%%@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%%##***####@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#############################*******************************************************######%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################################%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#********************************************************************************#%%%%%##******************************************###%@@@@@@@@@@@@@@@@@@@@@@%#******************************************####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%###***##@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##############################******************************************************######%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#********************************************************************************##%%%%##******************************************###%@@@@@@@@@@@@@@@@@@@@@@%#******************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%###*##@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##############################******************************************************#####%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***************************************************************************#*****#%%%%##*****************************************####@@@@@@@@@@@@@@@@@@@@@@@%#******************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@%%%%%%@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###############################****************************************************######%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***************************************************************************#****##%%%##******************************************####@@@@@@@@@@@@@@@@@@@@@@@@#******************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@%@@%%%%@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###############################*#*************************************************#######%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**********************************************************########***********#**###%%##**#***************************************###%@@@@@@@@@@@@@@@@@@@@@@@@#******************************************###%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@%%%@@%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@%%%%@@@@%%%%@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################**************************************************######%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***************************************************************###****************#%%##******************************************###%@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@%%@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################**************************************************######%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***************************************************************##****************#%%##*#****************************************###%@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################**************************************************######%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************************************#****************#%##*##***************************************####%@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%@@@@%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################************************************************#*######%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%##################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**********************************************************************************###**#***************************************####@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@@%%%%%%%%%%%%@%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################**********************************************#*######%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%###################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**********************************************************************************###**#****##*********************************####@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%@%%%@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################**********************************************######%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%###################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********************************************************************************####**#***####********************************###%@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@%%%%@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################********************************************######%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%###################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********************************************************************************###**#***####********************************###%@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@%%%%%@%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%@@@@@@@%@%%%%%%%@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%@@@%%@@%%%%%%%%%@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
######################################*******************************************######%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%###################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*********************************************************************************##**##***####********************************###%@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@%%@@@%%%%%%%%%@@@@@%@%%%%%%%%%%@@@%%%%%%%%@@%@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################*****************************************######%%%%%%%%%%%%%##################################%%%%%%%%%%%#####################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*********************************************************************************###**##**************************************###%@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################*****************************************######%%%%%%%%%%%%%###################################%%%%%%%%%#####################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********************************************************************************###******************************************###%@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################*************************************######%%%%%%%%%%%%%%######################################%%%%#######################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********************************************************************************###****************************************#*###@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################################************************************######%%%%%%%%%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**#*****************************************************************************###****************************************#*##%@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%@@@@@%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################################**********************************########%%%%%%%%%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##*###*######*******************************************##########***************###****************************************####%@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%@%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%@@%%%@@%%%%%%@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##############################################********************************########%%%%%%%%%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*###*###########************************************##############****#*********##****************************************####%@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%@%%%%@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################*****************************########%%%%%%%%%%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@############################************************################***##********###*###########**************************#####%@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################*****************************########%%%%%%%%%%%%%%%###############################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############################**#########******#****##################**##********###*############***********************#######%@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################****************************#######%%%%%%%%%%%%%%%###############################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################*********###***********#***###%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************#**####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@%%@@%%%%%%%@%%@@%@@@@@%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%@@@%%%%%%%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#########################################################********************#######%%%%%%%%%%%%%%%%###############################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################**##*#####**********#*#####%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********************************#****####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@%%@%%@%%@@%%%%@@@@%%@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################***********#########%%%%%%%%%%%%%%%%##############################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################*********#######%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********************************#***#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@%%%%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@%@%%@##%@%%%%%%@@%%%%@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################********#**#########%%%%%%%%%%%%%%%%##############################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################***############%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************#######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%@@@##%@@@@@%%%%@%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@%%%@@%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################********############%%%%%%%%%%%%%%%%#############################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@############################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@%%@@@@@@@@%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@%%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################%%%%%%%%%%%%%%%%############################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***************************************####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%@@@@@@@@@@@%%%%@@%%%%%%@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************#####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@%%@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################%%%%%%%%%%%%%%%%%#########################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********************************#*#####@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%@@@%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################%%%%%%%%%%%%%%%%%########################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#********************************##**##*##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@########################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******************************####*####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##****************************#######*##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%%######################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#######################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##**#******************##############*##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@%%@@@@@@@@@%%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*##**********######################*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@%%%%%%%%@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@%%@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######********#########################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@%%%%%@@@@@@@@@%%%%@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@%@@@%%%@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%@%%%%@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###############################################################################%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%@@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###############################################################################%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@%@@@@@@%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###############################################################################%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@%@@@@@@@%@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##############################################################################%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##############################################################################%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##############################################################################%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##############################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@%###%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#############################################################################%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@%%@@@@@@@@@####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#############################################################################%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#############################################################################%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####%%@@@@@@@@@@@@@@%@@@@@@@%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####%%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####%@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####%%@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#########################################################################################################%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%############################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####%@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%